From f0c12e50dd36588de651ff4e34a5500201d23c1e Mon Sep 17 00:00:00 2001 From: druiz17 Date: Fri, 8 Sep 2017 11:50:19 -0700 Subject: [PATCH] some small bug fixes --- .../controllers/controllerModules/nearActionGrabEntity.js | 6 +++--- .../controllers/controllerModules/nearParentGrabOverlay.js | 3 ++- .../controllers/controllerModules/overlayLaserInput.js | 5 ++++- scripts/system/libraries/cloneEntityUtils.js | 3 ++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/scripts/system/controllers/controllerModules/nearActionGrabEntity.js b/scripts/system/controllers/controllerModules/nearActionGrabEntity.js index 7c856535ab..932cbda179 100644 --- a/scripts/system/controllers/controllerModules/nearActionGrabEntity.js +++ b/scripts/system/controllers/controllerModules/nearActionGrabEntity.js @@ -167,7 +167,7 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); this.isReady = function (controllerData) { this.targetEntityID = null; - if (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE) { + if (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE && controllerData.secondaryValues[this.hand] < TRIGGER_OFF_VALUE) { return makeRunningValues(false, [], []); } @@ -186,7 +186,7 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); this.run = function (controllerData) { if (this.actionID) { - if (controllerData.triggerClicks[this.hand] === 0) { + if (controllerData.triggerClicks[this.hand] === 0 && controllerData.secondaryValues[this.hand] === 0) { this.endNearGrabAction(); return makeRunningValues(false, [], []); } @@ -204,7 +204,7 @@ Script.include("/~/system/libraries/cloneEntityUtils.js"); var targetProps = this.getTargetProps(controllerData); if (targetProps) { - if (controllerData.triggerClicks[this.hand] === 1) { + if (controllerData.triggerClicks[this.hand] === 1 || controllerData.secondaryValues[this.hand] === 1) { // switch to grabbing var targetCloneable = entityIsCloneable(targetProps); if (targetCloneable) { diff --git a/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js b/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js index 9c8e6265ed..54257ea6af 100644 --- a/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js +++ b/scripts/system/controllers/controllerModules/nearParentGrabOverlay.js @@ -128,7 +128,8 @@ var GRAB_RADIUS = 0.35; }; this.endNearParentingGrabOverlay = function () { - if (this.previousParentID[this.grabbedThingID] === NULL_UUID) { + var previousParentID = this.previousParentID[this.grabbedThingID]; + if (previousParentID === NULL_UUID || previousParentID === null || previousParentID === undefined) { Overlays.editOverlay(this.grabbedThingID, { parentID: NULL_UUID, parentJointIndex: -1 diff --git a/scripts/system/controllers/controllerModules/overlayLaserInput.js b/scripts/system/controllers/controllerModules/overlayLaserInput.js index 4b17f90524..71fc31a500 100644 --- a/scripts/system/controllers/controllerModules/overlayLaserInput.js +++ b/scripts/system/controllers/controllerModules/overlayLaserInput.js @@ -429,8 +429,11 @@ Script.include("/~/system/libraries/controllers.js"); this.shouldExit = function(controllerData) { var intersection = controllerData.rayPicks[this.hand]; + var nearGrabName = this.hand === RIGHT_HAND ? "RightNearParentingGrabOverlay" : "LeftNearParentingGrabOverlay"; + var nearGrabModule = getEnabledModuleByName(nearGrabName); + var status = nearGrabModule ? nearGrabModule.isReady(controllerData) : makeRunningValues(false, [], []); var offOverlay = (intersection.type !== RayPick.INTERSECTED_OVERLAY); - return offOverlay; + return offOverlay || status.active; }; this.exitModule = function() { diff --git a/scripts/system/libraries/cloneEntityUtils.js b/scripts/system/libraries/cloneEntityUtils.js index a8e8bc227d..26d8051f89 100644 --- a/scripts/system/libraries/cloneEntityUtils.js +++ b/scripts/system/libraries/cloneEntityUtils.js @@ -72,6 +72,7 @@ cloneEntity = function(props, worldEntityProps) { cloneableProps.name = cloneableProps.name + '-clone-' + cloneableProps.id; var lifetime = grabInfo.cloneLifetime ? grabInfo.cloneLifetime : 300; var dynamic = grabInfo.cloneDynamic ? grabInfo.cloneDynamic : false; + var triggerable = grabInfo.triggerable ? grabInfo.triggerable : false; var cUserData = Object.assign({}, JSON.parse(cloneableProps.userData)); var cProperties = Object.assign({}, cloneableProps); @@ -85,7 +86,7 @@ cloneEntity = function(props, worldEntityProps) { cProperties.dynamic = dynamic; cProperties.locked = false; - cUserData.grabbableKey.triggerable = true; + cUserData.grabbableKey.triggerable = triggerable; cUserData.grabbableKey.grabbable = true; cProperties.lifetime = lifetime; cProperties.userData = JSON.stringify(cUserData);