From 6c16fcfe651af9539f80a73a8b16bc12757eab5c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 4 Jan 2018 16:37:20 +1300 Subject: [PATCH] Fix tablet laser when Shapes app is running --- .../controllerModules/inVREditMode.js | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/scripts/system/controllers/controllerModules/inVREditMode.js b/scripts/system/controllers/controllerModules/inVREditMode.js index e3035b26f2..d20872a17f 100644 --- a/scripts/system/controllers/controllerModules/inVREditMode.js +++ b/scripts/system/controllers/controllerModules/inVREditMode.js @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html /* global Script, MyAvatar, RIGHT_HAND, LEFT_HAND, enableDispatcherModule, disableDispatcherModule, - makeDispatcherModuleParameters, makeRunningValues, getEnabledModuleByName + makeDispatcherModuleParameters, makeRunningValues, getEnabledModuleByName, makeLaserParams */ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); @@ -25,9 +25,17 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); ? ["rightHand", "rightHandEquip", "rightHandTrigger"] : ["leftHand", "leftHandEquip", "leftHandTrigger"], [], - 100 + 100, + makeLaserParams(this.hand, false) ); + this.pointingAtTablet = function (objectID) { + if (objectID === HMD.tabletScreenID || objectID === HMD.homeButtonID) { + return true; + } + return false; + }; + this.isReady = function (controllerData) { if (this.disableModules) { return makeRunningValues(true, [], []); @@ -42,7 +50,6 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } // Tablet stylus. - // Includes the tablet laser. var tabletStylusInput = getEnabledModuleByName(this.hand === RIGHT_HAND ? "RightTabletStylusInput" : "LeftTabletStylusInput"); @@ -53,6 +60,18 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } } + // Tablet surface. + var overlayLaser = getEnabledModuleByName(this.hand === RIGHT_HAND + ? "RightWebSurfaceLaserInput" + : "LeftWebSurfaceLaserInput"); + if (overlayLaser) { + var overlayLaserReady = overlayLaser.isReady(controllerData); + var target = controllerData.rayPicks[this.hand].objectID; + if (overlayLaserReady.active && this.pointingAtTablet(target)) { + return makeRunningValues(false, [], []); + } + } + // Tablet grabbing. var nearOverlay = getEnabledModuleByName(this.hand === RIGHT_HAND ? "RightNearParentingGrabOverlay"