From e043d181cd61360cf5a361773768245a455c74e5 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 16 Jul 2019 16:58:44 -0700 Subject: [PATCH 1/5] Disable picks in controllerDispatcher when not in HMD --- .../system/controllers/controllerDispatcher.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 0a9fa4dce1..e27834690d 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -285,6 +285,21 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); } } + // Enable/disable controller raypicking depending on whether we are in HMD + if (HMD.active) { + Pointers.enablePointer(_this.leftPointer); + Pointers.enablePointer(_this.rightPointer); + Pointers.enablePointer(_this.leftHudPointer); + Pointers.enablePointer(_this.rightHudPointer); + Picks.enablePick(_this.mouseRayPick); + } else { + Pointers.disablePointer(_this.leftPointer); + Pointers.disablePointer(_this.rightPointer); + Pointers.disablePointer(_this.leftHudPointer); + Pointers.disablePointer(_this.rightHudPointer); + Picks.disablePick(_this.mouseRayPick); + } + // raypick for each controller var rayPicks = [ Pointers.getPrevPickResult(_this.leftPointer), From fcaa64b9ef9afe02bf4768e39013ffd18204b9bd Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 16 Jul 2019 17:00:16 -0700 Subject: [PATCH 2/5] Fix teleport collision picks always enabled if user never enters HMD --- scripts/system/controllers/controllerModules/teleport.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/controllers/controllerModules/teleport.js b/scripts/system/controllers/controllerModules/teleport.js index 5a51773930..e6ba440c29 100644 --- a/scripts/system/controllers/controllerModules/teleport.js +++ b/scripts/system/controllers/controllerModules/teleport.js @@ -366,7 +366,7 @@ Script.include("/~/system/libraries/controllers.js"); var offset = _this.pickHeightOffset * capsuleRatio; _this.teleportHandCollisionPick = Picks.createPick(PickType.Collision, { - enabled: true, + enabled: false, parentID: Pointers.getPointerProperties(_this.teleportParabolaHandCollisions).renderStates["collision"].end, filter: Picks.PICK_ENTITIES | Picks.PICK_AVATARS, shape: { @@ -382,7 +382,7 @@ Script.include("/~/system/libraries/controllers.js"); }); _this.teleportHeadCollisionPick = Picks.createPick(PickType.Collision, { - enabled: true, + enabled: false, parentID: Pointers.getPointerProperties(_this.teleportParabolaHeadCollisions).renderStates["collision"].end, filter: Picks.PICK_ENTITIES | Picks.PICK_AVATARS, shape: { From 79d09f68fdecb89aadc5d9632f61dd0d7f4ed741 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 18 Jul 2019 12:54:36 -0700 Subject: [PATCH 3/5] Disable grab.js picks when in HMD --- scripts/system/controllers/grab.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index 1fb82d3843..2cab0cbf25 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -221,6 +221,20 @@ function Grabber() { }); } +Grabber.prototype.setPicksEnabled = function(enabled) { + if (enabled) { + Picks.enablePick(this.mouseRayOverlays); + Pointers.enablePointer(this.mouseRayEntities); + } else { + Picks.disablePick(this.mouseRayOverlays); + Pointers.disablePointer(this.mouseRayEntities); + } +} + +Grabber.prototype.displayModeChanged = function(isHMDMode) { + this.setPicksEnabled(!isHMDMode); +} + Grabber.prototype.computeNewGrabPlane = function() { if (!this.isGrabbing) { return; @@ -488,6 +502,10 @@ Grabber.prototype.cleanup = function() { var grabber = new Grabber(); +function displayModeChanged(isHMDMode) { + grabber.displayModeChanged(isHMDMode); +} + function pressEvent(event) { grabber.pressEvent(event); } @@ -517,6 +535,7 @@ Controller.mouseMoveEvent.connect(moveEvent); Controller.mouseReleaseEvent.connect(releaseEvent); Controller.keyPressEvent.connect(keyPressEvent); Controller.keyReleaseEvent.connect(keyReleaseEvent); +HMD.displayModeChanged.connect(displayModeChanged); Script.scriptEnding.connect(cleanup); }()); // END LOCAL_SCOPE From abac1787a61694157c99148d4204c874d06e8166 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 22 Jul 2019 11:25:49 -0700 Subject: [PATCH 4/5] Fix using invalid pick API functions on HMD ray pointer --- scripts/system/controllers/controllerDispatcher.js | 12 ++++++------ .../system/controllers/controllerModules/mouseHMD.js | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index e27834690d..cf365a4119 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -291,13 +291,13 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Pointers.enablePointer(_this.rightPointer); Pointers.enablePointer(_this.leftHudPointer); Pointers.enablePointer(_this.rightHudPointer); - Picks.enablePick(_this.mouseRayPick); + Pointers.enablePointer(_this.mouseRayPointer); } else { Pointers.disablePointer(_this.leftPointer); Pointers.disablePointer(_this.rightPointer); Pointers.disablePointer(_this.leftHudPointer); Pointers.disablePointer(_this.rightHudPointer); - Picks.disablePick(_this.mouseRayPick); + Pointers.disablePointer(_this.mouseRayPointer); } // raypick for each controller @@ -309,7 +309,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); Pointers.getPrevPickResult(_this.leftHudPointer), Pointers.getPrevPickResult(_this.rightHudPointer) ]; - var mouseRayPick = Pointers.getPrevPickResult(_this.mouseRayPick); + var mouseRayPointer = Pointers.getPrevPickResult(_this.mouseRayPointer); // if the pickray hit something very nearby, put it into the nearby entities list for (h = LEFT_HAND; h <= RIGHT_HAND; h++) { @@ -380,7 +380,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); nearbyOverlayIDs: nearbyOverlayIDs, rayPicks: rayPicks, hudRayPicks: hudRayPicks, - mouseRayPick: mouseRayPick + mouseRayPointer: mouseRayPointer }; if (PROFILE) { Script.endProfileRange("dispatch.gather"); @@ -545,7 +545,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); hand: RIGHT_HAND }); - this.mouseRayPick = Pointers.createPointer(PickType.Ray, { + this.mouseRayPointer = Pointers.createPointer(PickType.Ray, { joint: "Mouse", filter: Picks.PICK_OVERLAYS | Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_NONCOLLIDABLE, enabled: true @@ -594,7 +594,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); this.cleanup = function () { Controller.disableMapping(MAPPING_NAME); _this.pointerManager.removePointers(); - Pointers.removePointer(this.mouseRayPick); + Pointers.removePointer(this.mouseRayPointer); }; } diff --git a/scripts/system/controllers/controllerModules/mouseHMD.js b/scripts/system/controllers/controllerModules/mouseHMD.js index 172923a8e2..0eccec01a6 100644 --- a/scripts/system/controllers/controllerModules/mouseHMD.js +++ b/scripts/system/controllers/controllerModules/mouseHMD.js @@ -64,7 +64,7 @@ Reticle.depth = Vec3.distance(reticlePositionOnHUD, HMD.position); } else { var APPARENT_MAXIMUM_DEPTH = 100.0; - var result = controllerData.mouseRayPick; + var result = controllerData.mouseRayPointer; Reticle.depth = result.intersects ? result.distance : APPARENT_MAXIMUM_DEPTH; } }; From d48c8d897c9fd30943ee18e236b6e051d147da6c Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 22 Jul 2019 11:40:06 -0700 Subject: [PATCH 5/5] Clarify that a Grabber member function toggles both picks and pointers --- scripts/system/controllers/grab.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index 2cab0cbf25..0bd2e9df9a 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -221,7 +221,7 @@ function Grabber() { }); } -Grabber.prototype.setPicksEnabled = function(enabled) { +Grabber.prototype.setPicksAndPointersEnabled = function(enabled) { if (enabled) { Picks.enablePick(this.mouseRayOverlays); Pointers.enablePointer(this.mouseRayEntities); @@ -232,7 +232,7 @@ Grabber.prototype.setPicksEnabled = function(enabled) { } Grabber.prototype.displayModeChanged = function(isHMDMode) { - this.setPicksEnabled(!isHMDMode); + this.setPicksAndPointersEnabled(!isHMDMode); } Grabber.prototype.computeNewGrabPlane = function() {