| @@ -22,7 +22,7 @@ Script.include("/~/system/libraries/controllers.js"); · 21 unmodified lines |
| 22 | this.running = false; | 22 | this.running = false; |
| 23 | | 23 | |
| 24 | this.parameters = makeDispatcherModuleParameters( | 24 | this.parameters = makeDispatcherModuleParameters( |
| 25 | 120, | 25 | 160, |
| 26 | this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], | 26 | this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], |
| 27 | [], | 27 | [], |
| 28 | 100, | 28 | 100, |
| @@ -60,6 +60,30 @@ Script.include("/~/system/libraries/controllers.js"); · 31 unmodified lines |
| 60 | return this.hand === RIGHT_HAND ? leftOverlayLaserInput : rightOverlayLaserInput; | 60 | return this.hand === RIGHT_HAND ? leftOverlayLaserInput : rightOverlayLaserInput; |
| 61 | }; | 61 | }; |
| 62 | | 62 | |
| | 63 | this.isPointingAtGrabbableEntity = function(controllerData, triggerPressed) { |
| | 64 | // we are searching for an entity that is not a web entity. We want to be able to |
| | 65 | // grab a non-web entity if the ray-pick intersects one. |
| | 66 | var intersection = controllerData.rayPicks[this.hand]; |
| | 67 | if(intersection.type === Picks.INTERSECTED_ENTITY) { |
| | 68 | // is pointing at an entity. |
| | 69 | var entityProperty = Entities.getEntityProperties(intersection.objectID); |
| | 70 | var entityType = entityProperty.type; |
| | 71 | var isGrabbable = entityIsGrabbable(entityProperty); |
| | 72 | return (isGrabbable && triggerPressed && entityType !== "Web"); |
| | 73 | } else if (intersection.type === Picks.INTERSECTED_OVERLAY) { |
| | 74 | var objectID = intersection.objectID; |
| | 75 | if ((HMD.tabletID && objectID === HMD.tabletID) || |
| | 76 | (HMD.tabletScreenID && objectID === HMD.tabletScreenID) || |
| | 77 | (HMD.homeButtonID && objectID === HMD.homeButtonID)) { |
| | 78 | return true; |
| | 79 | } else { |
| | 80 | var overlayType = Overlays.getOverlayType(objectID); |
| | 81 | return overlayType === "web3d" || triggerPressed; |
| | 82 | } |
| | 83 | } |
| | 84 | return false; |
| | 85 | } |
| | 86 | |
| 63 | this.isPointingAtTriggerable = function(controllerData, triggerPressed) { | 87 | this.isPointingAtTriggerable = function(controllerData, triggerPressed) { |
| 64 | // allow pointing at tablet, unlocked web entities, or web overlays automatically without pressing trigger, | 88 | // allow pointing at tablet, unlocked web entities, or web overlays automatically without pressing trigger, |
| 65 | // but for pointing at locked web entities or non-web overlays user must be pressing trigger | 89 | // but for pointing at locked web entities or non-web overlays user must be pressing trigger |
| @@ -113,7 +137,8 @@ Script.include("/~/system/libraries/controllers.js"); · 47 unmodified lines |
| 113 | var isTriggerPressed = controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE && | 137 | var isTriggerPressed = controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE && |
| 114 | controllerData.triggerValues[this.otherHand] <= TRIGGER_OFF_VALUE; | 138 | controllerData.triggerValues[this.otherHand] <= TRIGGER_OFF_VALUE; |
| 115 | var allowThisModule = !otherModuleRunning || isTriggerPressed; | 139 | var allowThisModule = !otherModuleRunning || isTriggerPressed; |
| 116 | if (allowThisModule && this.isPointingAtTriggerable(controllerData, isTriggerPressed)) { | 140 | if (allowThisModule && this.isPointingAtTriggerable(controllerData, isTriggerPressed)) { |
| | 141 | //this.isPointingAtGrabbableEntity(controllerData, isTriggerPressed)) { |
| 117 | this.updateAllwaysOn(); | 142 | this.updateAllwaysOn(); |
| 118 | if (isTriggerPressed) { | 143 | if (isTriggerPressed) { |
| 119 | this.dominantHandOverride = true; // Override dominant hand. | 144 | this.dominantHandOverride = true; // Override dominant hand. |
| @@ -134,7 +159,8 @@ Script.include("/~/system/libraries/controllers.js"); · 14 unmodified lines |
| 134 | var allowThisModule = !otherModuleRunning && !grabModuleNeedsToRun; | 159 | var allowThisModule = !otherModuleRunning && !grabModuleNeedsToRun; |
| 135 | var isTriggerPressed = controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE; | 160 | var isTriggerPressed = controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE; |
| 136 | var laserOn = isTriggerPressed || this.parameters.handLaser.allwaysOn; | 161 | var laserOn = isTriggerPressed || this.parameters.handLaser.allwaysOn; |
| 137 | if (allowThisModule && (laserOn && this.isPointingAtTriggerable(controllerData, isTriggerPressed))) { | 162 | if (allowThisModule && (laserOn && this.isPointingAtTriggerable(controllerData, isTriggerPressed)) && |
| | 163 | this.isPointingAtGrabbableEntity(controllerData, isTriggerPressed)) { |
| 138 | this.running = true; | 164 | this.running = true; |
| 139 | return makeRunningValues(true, [], []); | 165 | return makeRunningValues(true, [], []); |
| 140 | } | 166 | } |