mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 13:07:04 +02:00
clean up tablet material entities and don't show them in edit
This commit is contained in:
parent
f8f206c2f9
commit
df4d81277f
3 changed files with 46 additions and 9 deletions
|
@ -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];
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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];
|
||||||
|
|
Loading…
Reference in a new issue