clean up tablet material entities and don't show them in edit

This commit is contained in:
Dante Ruiz 2018-07-09 16:59:32 -07:00
parent f8f206c2f9
commit df4d81277f
3 changed files with 46 additions and 9 deletions

View file

@ -10,7 +10,7 @@
/* global Script, Controller, RIGHT_HAND, LEFT_HAND, enableDispatcherModule, disableDispatcherModule, makeRunningValues, /* global Script, Controller, RIGHT_HAND, LEFT_HAND, enableDispatcherModule, disableDispatcherModule, makeRunningValues,
Messages, makeDispatcherModuleParameters, HMD, getGrabPointSphereOffset, COLORS_GRAB_SEARCHING_HALF_SQUEEZE, Messages, makeDispatcherModuleParameters, HMD, getGrabPointSphereOffset, COLORS_GRAB_SEARCHING_HALF_SQUEEZE,
COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_ON_VALUE, COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_ON_VALUE,
getEnabledModuleByName, PICK_MAX_DISTANCE, isInEditMode, Picks, makeLaserParams getEnabledModuleByName, PICK_MAX_DISTANCE, isInEditMode, Picks, makeLaserParams, Entities
*/ */
Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Script.include("/~/system/libraries/controllerDispatcherUtils.js");
@ -19,7 +19,7 @@ Script.include("/~/system/libraries/utils.js");
(function () { (function () {
var MARGIN = 25; var MARGIN = 25;
var TABLET_MATERIAL_ENTITY_NAME = 'Tablet-Material-Entity';
function InEditMode(hand) { function InEditMode(hand) {
this.hand = hand; this.hand = hand;
this.triggerClicked = false; this.triggerClicked = false;
@ -53,7 +53,7 @@ Script.include("/~/system/libraries/utils.js");
return (HMD.tabletScreenID && objectID === HMD.tabletScreenID) return (HMD.tabletScreenID && objectID === HMD.tabletScreenID)
|| (HMD.homeButtonID && objectID === HMD.homeButtonID); || (HMD.homeButtonID && objectID === HMD.homeButtonID);
}; };
this.calculateNewReticlePosition = function(intersection) { this.calculateNewReticlePosition = function(intersection) {
var dims = Controller.getViewportDimensions(); var dims = Controller.getViewportDimensions();
this.reticleMaxX = dims.x - MARGIN; this.reticleMaxX = dims.x - MARGIN;
@ -75,10 +75,12 @@ Script.include("/~/system/libraries/utils.js");
} }
} }
if (this.selectedTarget.type === Picks.INTERSECTED_ENTITY) { if (this.selectedTarget.type === Picks.INTERSECTED_ENTITY) {
Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({ if (!this.isTabletMaterialEntity(this.selectedTarget.objectID)) {
method: "selectEntity", Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({
entityID: this.selectedTarget.objectID method: "selectEntity",
})); entityID: this.selectedTarget.objectID
}));
}
} else if (this.selectedTarget.type === Picks.INTERSECTED_OVERLAY) { } else if (this.selectedTarget.type === Picks.INTERSECTED_OVERLAY) {
Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({ Messages.sendLocalMessage("entityToolUpdates", JSON.stringify({
method: "selectOverlay", method: "selectOverlay",
@ -88,10 +90,16 @@ Script.include("/~/system/libraries/utils.js");
this.triggerClicked = true; this.triggerClicked = true;
} }
this.sendPointingAtData(controllerData); this.sendPointingAtData(controllerData);
}; };
this.isTabletMaterialEntity = function(entityID) {
return ((entityID === HMD.homeButtonHighlightMaterialID) ||
(entityID === HMD.homeButtonUnhighlightMaterialID));
};
this.sendPointingAtData = function(controllerData) { this.sendPointingAtData = function(controllerData) {
var rayPick = controllerData.rayPicks[this.hand]; var rayPick = controllerData.rayPicks[this.hand];
var hudRayPick = controllerData.hudRayPicks[this.hand]; var hudRayPick = controllerData.hudRayPicks[this.hand];

View file

@ -30,6 +30,8 @@ var INCHES_TO_METERS = 1 / 39.3701;
var NO_HANDS = -1; var NO_HANDS = -1;
var DELAY_FOR_30HZ = 33; // milliseconds var DELAY_FOR_30HZ = 33; // milliseconds
var TABLET_MATERIAL_ENTITY_NAME = 'Tablet-Material-Entity';
// will need to be recaclulated if dimensions of fbx model change. // will need to be recaclulated if dimensions of fbx model change.
var TABLET_NATURAL_DIMENSIONS = {x: 32.083, y: 48.553, z: 2.269}; var TABLET_NATURAL_DIMENSIONS = {x: 32.083, y: 48.553, z: 2.269};
@ -79,6 +81,21 @@ function calcSpawnInfo(hand, landscape) {
}; };
} }
function cleanUpOldMaterialEntities() {
var avatarEntityData = MyAvatar.getAvatarEntityData();
for (var entityID in avatarEntityData) {
var entityName = Entities.getEntityProperties(entityID, ["name"]).name;
if (entityName === TABLET_MATERIAL_ENTITY_NAME) {
Entities.deleteEntity(entityID);
}
}
}
cleanUpOldMaterialEntities();
/** /**
* WebTablet * WebTablet
* @param url [string] url of content to show on the tablet. * @param url [string] url of content to show on the tablet.
@ -134,6 +151,7 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location, visible) {
} }
this.cleanUpOldTablets(); this.cleanUpOldTablets();
cleanUpOldMaterialEntities();
this.tabletEntityID = Overlays.addOverlay("model", tabletProperties); this.tabletEntityID = Overlays.addOverlay("model", tabletProperties);
@ -180,6 +198,7 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location, visible) {
this.homeButtonUnhighlightMaterial = Entities.addEntity({ this.homeButtonUnhighlightMaterial = Entities.addEntity({
type: "Material", type: "Material",
name: TABLET_MATERIAL_ENTITY_NAME,
materialURL: "materialData", materialURL: "materialData",
localPosition: { x: 0.0, y: 0.0, z: 0.0 }, localPosition: { x: 0.0, y: 0.0, z: 0.0 },
priority: HIGH_PRIORITY, priority: HIGH_PRIORITY,
@ -199,6 +218,7 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location, visible) {
this.homeButtonHighlightMaterial = Entities.addEntity({ this.homeButtonHighlightMaterial = Entities.addEntity({
type: "Material", type: "Material",
name: TABLET_MATERIAL_ENTITY_NAME,
materialURL: "materialData", materialURL: "materialData",
localPosition: { x: 0.0, y: 0.0, z: 0.0 }, localPosition: { x: 0.0, y: 0.0, z: 0.0 },
priority: LOW_PRIORITY, priority: LOW_PRIORITY,

View file

@ -70,6 +70,11 @@ EntityListTool = function(opts) {
return value !== undefined ? value : ""; return value !== undefined ? value : "";
} }
function filterEntity(entityID) {
return ((entityID === HMD.homeButtonHighlightMaterialID) ||
(entityID === HMD.homeButtonUnhighlightMaterialID));
}
that.sendUpdate = function() { that.sendUpdate = function() {
var entities = []; var entities = [];
@ -80,6 +85,10 @@ EntityListTool = function(opts) {
ids = Entities.findEntities(MyAvatar.position, searchRadius); ids = Entities.findEntities(MyAvatar.position, searchRadius);
} }
ids = ids.filter(function(id) {
return !filterEntity(id);
});
var cameraPosition = Camera.position; var cameraPosition = Camera.position;
for (var i = 0; i < ids.length; i++) { for (var i = 0; i < ids.length; i++) {
var id = ids[i]; var id = ids[i];