From 0580e2368666a0977b39eeb40338cdf627501e14 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 1 Nov 2017 15:16:02 -0700 Subject: [PATCH] fixed edit mode and allow to scroll off tablet --- .../controllers/controllerDispatcher.js | 27 ++++---- .../controllerModules/inEditMode.js | 7 +- .../controllerModules/overlayLaserInput.js | 38 ++++++----- .../controllerModules/webEntityLaserInput.js | 66 ------------------- .../system/controllers/controllerScripts.js | 1 - 5 files changed, 40 insertions(+), 99 deletions(-) delete mode 100644 scripts/system/controllers/controllerModules/webEntityLaserInput.js diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 933ca1e2b1..cd52caae38 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -11,7 +11,7 @@ controllerDispatcherPlugins:true, controllerDispatcherPluginsNeedSort:true, LEFT_HAND, RIGHT_HAND, NEAR_GRAB_PICK_RADIUS, DEFAULT_SEARCH_SPHERE_DISTANCE, DISPATCHER_PROPERTIES, getGrabPointSphereOffset, HMD, MyAvatar, Messages, findHandChildEntities, Pointers, PickType, COLORS_GRAB_SEARCHING_HALF_SQUEEZE - COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, Picks + COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, Picks, TRIGGER_ON_VALUE */ controllerDispatcherPlugins = {}; @@ -262,41 +262,40 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); var laserLocked; if (_this.laserVisibleStatus[LEFT_HAND]) { laserLocked = _this.laserLockStatus[LEFT_HAND]; - _this.updateLaserRenderState(_this.leftControllerPointer,_this.leftTriggerClicked, laserLocked); + _this.updateLaserRenderState(_this.leftControllerPointer,_this.leftTriggerClicked, _this.leftTriggerValue, laserLocked); } else { Pointers.setRenderState(_this.leftControllerPointer, ""); } if (_this.laserVisibleStatus[RIGHT_HAND]) { laserLocked = _this.laserLockStatus[RIGHT_HAND]; - _this.updateLaserRenderState(_this.rightControllerPointer, _this.rightTriggerClicked, laserLocked); + _this.updateLaserRenderState(_this.rightControllerPointer, _this.rightTriggerClicked, _this.rightTriggerValue, laserLocked); } else { Pointers.setRenderState(_this.rightControllerPointer, ""); } if (_this.laserVisibleStatus[LEFT_HAND + HUD_LASER_OFFSET]) { - _this.updateLaserRenderState(_this.leftControllerHudRayPick, _this.leftTriggerClicked, false); + _this.updateLaserRenderState(_this.leftControllerHudRayPick, _this.leftTriggerClicked, _this.leftTriggerValue, false); } else { Pointers.setRenderState(_this.leftControllerHudRayPick, ""); } if (_this.laserVisibleStatus[RIGHT_HAND + HUD_LASER_OFFSET]) { - _this.updateLaserRenderState(_this.rightControllerHudRayPick, _this.rightTriggerClicked, false); + _this.updateLaserRenderState(_this.rightControllerHudRayPick, _this.rightTriggerClicked, _this.rightTriggerValue, false); } else { Pointers.setRenderState(_this.rightControllerHudRayPick, ""); } }; - this.updateLaserRenderState = function(laser, triggerClicked, laserLocked) { - var mode = "hold"; - if (!laserLocked) { - if (triggerClicked) { - mode = "full"; - } else { - mode = "half"; - } + this.updateLaserRenderState = function(laser, triggerClicked, triggerValue, laserLocked) { + var mode = ""; + if (laserLocked) { + mode = "hold"; + } else if (triggerClicked) { + mode = "full"; + } else if (triggerValue > TRIGGER_ON_VALUE) { + mode = "half"; } - Pointers.setRenderState(laser, mode); }; diff --git a/scripts/system/controllers/controllerModules/inEditMode.js b/scripts/system/controllers/controllerModules/inEditMode.js index c4c53b4d97..10c2f049d4 100644 --- a/scripts/system/controllers/controllerModules/inEditMode.js +++ b/scripts/system/controllers/controllerModules/inEditMode.js @@ -26,7 +26,8 @@ Script.include("/~/system/libraries/utils.js"); 160, this.hand === RIGHT_HAND ? ["rightHand", "rightHandEquip", "rightHandTrigger"] : ["leftHand", "leftHandEquip", "leftHandTrigger"], [], - 100); + 100, + this.hand); this.nearTablet = function(overlays) { for (var i = 0; i < overlays.length; i++) { @@ -69,6 +70,10 @@ Script.include("/~/system/libraries/utils.js"); } }; + this.exitModule = function() { + return makeRunningValues(false, [], []); + }; + this.isReady = function(controllerData) { if (isInEditMode()) { this.triggerClicked = false; diff --git a/scripts/system/controllers/controllerModules/overlayLaserInput.js b/scripts/system/controllers/controllerModules/overlayLaserInput.js index 3997dcaab1..10235a63e9 100644 --- a/scripts/system/controllers/controllerModules/overlayLaserInput.js +++ b/scripts/system/controllers/controllerModules/overlayLaserInput.js @@ -26,13 +26,6 @@ Script.include("/~/system/libraries/controllers.js"); 100, this.hand); - this.processLaser = function(controllerData) { - if (this.shouldExit(controllerData)) { - return false; - } - return true; - }; - this.grabModuleWantsNearbyOverlay = function(controllerData) { if (controllerData.triggerValues[this.hand] > TRIGGER_ON_VALUE) { var nearGrabName = this.hand === RIGHT_HAND ? "RightNearParentingGrabOverlay" : "LeftNearParentingGrabOverlay"; @@ -51,15 +44,19 @@ Script.include("/~/system/libraries/controllers.js"); return false; }; - this.shouldExit = function(controllerData) { + this.isPointingAtWebEntity = function(controllerData) { var intersection = controllerData.rayPicks[this.hand]; - var offOverlay = (intersection.type !== Picks.INTERSECTED_OVERLAY); - var triggerOff = (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE); - if (triggerOff) { - this.deleteContextOverlay(); + var entityProperty = Entities.getEntityProperties(intersection.objectID); + var entityType = entityProperty.type; + if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web")) { + return true; } - var grabbingOverlay = this.grabModuleWantsNearbyOverlay(controllerData); - return offOverlay || grabbingOverlay || triggerOff; + return false; + }; + + this.isPointingAtOverlay = function(controllerData) { + var intersection = controllerData.rayPicks[this.hand]; + return intersection.type === Picks.INTERSECTED_OVERLAY; }; this.deleteContextOverlay = function() { @@ -75,14 +72,21 @@ Script.include("/~/system/libraries/controllers.js"); }; this.isReady = function (controllerData) { - if (this.processLaser(controllerData)) { - return makeRunningValues(true, [], []); + if (this.isPointingAtOverlay(controllerData) || this.isPointingAtWebEntity(controllerData)) { + if (controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE) { + return makeRunningValues(true, [], []); + } } return makeRunningValues(false, [], []); }; this.run = function (controllerData, deltaTime) { - return this.isReady(controllerData); + var grabModuleNeedsToRun = this.grabModuleWantsNearbyOverlay(controllerData); + if (controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE && !grabModuleNeedsToRun) { + return makeRunningValues(true, [], []); + } + this.deleteContextOverlay(); + return makeRunningValues(false, [], []); }; } diff --git a/scripts/system/controllers/controllerModules/webEntityLaserInput.js b/scripts/system/controllers/controllerModules/webEntityLaserInput.js deleted file mode 100644 index 9b6e0cc4f7..0000000000 --- a/scripts/system/controllers/controllerModules/webEntityLaserInput.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; - -// webEntityLaserInput.js -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html - -/* jslint bitwise: true */ - -/* global Script, Controller, LaserPointers, RayPick, RIGHT_HAND, LEFT_HAND, Vec3, Quat, getGrabPointSphereOffset, - makeRunningValues, Entities, enableDispatcherModule, disableDispatcherModule, makeDispatcherModuleParameters, - PICK_MAX_DISTANCE, COLORS_GRAB_SEARCHING_HALF_SQUEEZE, COLORS_GRAB_SEARCHING_FULL_SQUEEZE, COLORS_GRAB_DISTANCE_HOLD, - DEFAULT_SEARCH_SPHERE_DISTANCE, TRIGGER_ON_VALUE, ZERO_VEC, Overlays, Picks -*/ - -Script.include("/~/system/libraries/controllerDispatcherUtils.js"); -Script.include("/~/system/libraries/controllers.js"); - -(function() { - function WebEntityLaserInput(hand) { - this.hand = hand; - this.parameters = makeDispatcherModuleParameters( - 550, - this.hand === RIGHT_HAND ? ["rightHand"] : ["leftHand"], - [], - 100); - - this.isPointingAtWebEntity = function(controllerData) { - var intersection = controllerData.rayPicks[this.hand]; - var entityProperty = Entities.getEntityProperties(intersection.objectID); - var entityType = entityProperty.type; - - if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web")) { - return true; - } - return false; - }; - - this.isReady = function(controllerData) { - if (this.isPointingAtWebEntity(controllerData)) { - return makeRunningValues(true, [], []); - } - return makeRunningValues(false, [], []); - }; - - this.run = function(controllerData, deltaTime) { - if (!this.isPointingAtWebEntity(controllerData)) { - return makeRunningValues(false, [], []); - } - return makeRunningValues(true, [], []); - }; - } - - var leftWebEntityLaserInput = new WebEntityLaserInput(LEFT_HAND); - var rightWebEntityLaserInput = new WebEntityLaserInput(RIGHT_HAND); - - enableDispatcherModule("LeftWebEntityLaserInput", leftWebEntityLaserInput); - enableDispatcherModule("RightWebEntityLaserInput", rightWebEntityLaserInput); - - function cleanup() { - disableDispatcherModule("LeftWebEntityLaserInput"); - disableDispatcherModule("RightWebEntityLaserInput"); - } - Script.scriptEnding.connect(cleanup); - -}()); diff --git a/scripts/system/controllers/controllerScripts.js b/scripts/system/controllers/controllerScripts.js index 09602b33eb..7ab5a88948 100644 --- a/scripts/system/controllers/controllerScripts.js +++ b/scripts/system/controllers/controllerScripts.js @@ -23,7 +23,6 @@ var CONTOLLER_SCRIPTS = [ "controllerModules/equipEntity.js", "controllerModules/nearTrigger.js", "controllerModules/overlayLaserInput.js", - "controllerModules/webEntityLaserInput.js", "controllerModules/inEditMode.js", "controllerModules/inVREditMode.js", "controllerModules/disableOtherModule.js",