From 8bc6ca2fa1db01238e1a4e8dc436bdfa9ed97703 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 15:08:43 -0700 Subject: [PATCH 01/30] demo changes --- interface/resources/controllers/vive.json | 2 - scripts/defaultScripts.js | 1 + .../system/controllers/advancedMovement.js | 53 +++++++++++++++++++ scripts/system/controllers/teleport.js | 40 +++++++++++--- 4 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 scripts/system/controllers/advancedMovement.js diff --git a/interface/resources/controllers/vive.json b/interface/resources/controllers/vive.json index 79114b8141..27230b3b7e 100644 --- a/interface/resources/controllers/vive.json +++ b/interface/resources/controllers/vive.json @@ -1,8 +1,6 @@ { "name": "Vive to Standard", "channels": [ - { "from": "Vive.LY", "when": "Vive.LSY", "filters": ["invert"], "to": "Standard.LY" }, - { "from": "Vive.LX", "when": "Vive.LSX", "to": "Standard.LX" }, { "from": "Vive.LT", "to": "Standard.LT", "filters": [ diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index cf707c4d19..e39c424521 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -26,5 +26,6 @@ Script.load("system/controllers/handControllerPointer.js"); Script.load("system/controllers/squeezeHands.js"); Script.load("system/controllers/grab.js"); Script.load("system/controllers/teleport.js"); +Script.load("system/controllers/advancedMovement.js") Script.load("system/dialTone.js"); Script.load("system/firstPersonHMD.js"); diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js new file mode 100644 index 0000000000..0968edc7f6 --- /dev/null +++ b/scripts/system/controllers/advancedMovement.js @@ -0,0 +1,53 @@ +var mappingName, advancedMapping; + +function addAdvancedMovementItemToSettingsMenu() { + Menu.addMenuItem({ + menuName: "Settings", + menuItemName: "Advanced Movement", + isCheckable: true, + isChecked: false + }); + +} + +function addTranslationToLeftStick() { + Controller.enableMapping(mappingName); +} + +function registerMappings() { + mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); + advancedMapping = Controller.newMapping(mappingName); + advancedMapping.from(Controller.Vive.LY).invert().to(Controller.Standard.LY); + advancedMapping.from(Controller.Vive.LX).to(Controller.Standard.LX); +} + +function removeTranslationFromLeftStick() { + Controller.disableMapping(mappingName); +} + +function scriptEnding() { + Menu.removeMenuItem("Settings", "Advanced Movement"); + removeTranslationFromLeftStick(); +} + +function menuItemEvent(menuItem) { + if (menuItem == "Advanced Movement") { + print(" checked=" + Menu.isOptionChecked("Advanced Movement")); + var isChecked = Menu.isOptionChecked("Advanced Movement"); + if (isChecked === true) { + addTranslationToLeftStick(); + } else if (isChecked === false) { + removeTranslationFromLeftStick(); + } + } + +} + +addAdvancedMovementItemToSettingsMenu(); + +// register our scriptEnding callback +Script.scriptEnding.connect(scriptEnding); + +Menu.menuItemEvent.connect(menuItemEvent); + +registerMappings(); \ No newline at end of file diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index 5a1ae7e5ee..d1dd5b6348 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -38,6 +38,8 @@ var COLORS_TELEPORT_TOO_CLOSE = { }; var TELEPORT_CANCEL_RANGE = 1.5; +var USE_COOL_IN = true; +var COOL_IN_DURATION = 1750; function ThumbPad(hand) { this.hand = hand; @@ -81,6 +83,7 @@ function Teleporter() { this.smoothArrivalInterval = null; this.teleportHand = null; this.tooClose = false; + this.inCoolIn = false; this.initialize = function() { this.createMappings(); @@ -99,6 +102,7 @@ function Teleporter() { }; this.enterTeleportMode = function(hand) { + if (inTeleportMode === true) { return; } @@ -119,6 +123,10 @@ function Teleporter() { this.initialize(); Script.update.connect(this.update); this.updateConnected = true; + this.inCoolIn = true; + Script.setTimeout(function() { + _this.inCoolIn = false; + }, COOL_IN_DURATION) }; this.createTargetOverlay = function() { @@ -189,16 +197,16 @@ function Teleporter() { if (this.updateConnected === true) { Script.update.disconnect(this.update); } + this.disableMappings(); this.turnOffOverlayBeams(); - this.updateConnected = null; Script.setTimeout(function() { inTeleportMode = false; _this.enableGrab(); - }, 100); + }, 200); }; @@ -214,7 +222,13 @@ function Teleporter() { } teleporter.leftRay(); if ((leftPad.buttonValue === 0) && inTeleportMode === true) { - _this.teleport(); + if (_this.inCoolIn === true) { + _this.exitTeleportMode(); + _this.deleteTargetOverlay(); + _this.deleteCancelOverlay(); + } else { + _this.teleport(); + } return; } @@ -224,7 +238,13 @@ function Teleporter() { } teleporter.rightRay(); if ((rightPad.buttonValue === 0) && inTeleportMode === true) { - _this.teleport(); + if (_this.inCoolIn === true) { + _this.exitTeleportMode(); + _this.deleteTargetOverlay(); + _this.deleteCancelOverlay(); + } else { + _this.teleport(); + } return; } } @@ -235,7 +255,11 @@ function Teleporter() { var pose = Controller.getPoseValue(Controller.Standard.RightHand); var rightPosition = pose.valid ? Vec3.sum(Vec3.multiplyQbyV(MyAvatar.orientation, pose.translation), MyAvatar.position) : MyAvatar.getHeadPosition(); var rightRotation = pose.valid ? Quat.multiply(MyAvatar.orientation, pose.rotation) : - Quat.multiply(MyAvatar.headOrientation, Quat.angleAxis(-90, {x: 1, y: 0, z: 0})); + Quat.multiply(MyAvatar.headOrientation, Quat.angleAxis(-90, { + x: 1, + y: 0, + z: 0 + })); var rightPickRay = { origin: rightPosition, @@ -283,7 +307,11 @@ function Teleporter() { var pose = Controller.getPoseValue(Controller.Standard.LeftHand); var leftPosition = pose.valid ? Vec3.sum(Vec3.multiplyQbyV(MyAvatar.orientation, pose.translation), MyAvatar.position) : MyAvatar.getHeadPosition(); var leftRotation = pose.valid ? Quat.multiply(MyAvatar.orientation, pose.rotation) : - Quat.multiply(MyAvatar.headOrientation, Quat.angleAxis(-90, {x: 1, y: 0, z: 0})); + Quat.multiply(MyAvatar.headOrientation, Quat.angleAxis(-90, { + x: 1, + y: 0, + z: 0 + })); var leftPickRay = { origin: leftPosition, From a7ba4ce1f99fdc92b485117bb99549779ed6f1bc Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 15:11:07 -0700 Subject: [PATCH 02/30] jumping --- interface/resources/controllers/vive.json | 1 - scripts/system/controllers/advancedMovement.js | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/controllers/vive.json b/interface/resources/controllers/vive.json index 27230b3b7e..9cf641d2b0 100644 --- a/interface/resources/controllers/vive.json +++ b/interface/resources/controllers/vive.json @@ -13,7 +13,6 @@ { "from": "Vive.LS", "to": "Standard.LS" }, { "from": "Vive.LSTouch", "to": "Standard.LSTouch" }, - { "from": "Vive.RY", "when": "Vive.RSY", "filters": ["invert"], "to": "Standard.RY" }, { "from": "Vive.RX", "when": "Vive.RSX", "to": "Standard.RX" }, { "from": "Vive.RT", "to": "Standard.RT", diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 0968edc7f6..0d516664e3 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -19,6 +19,7 @@ function registerMappings() { advancedMapping = Controller.newMapping(mappingName); advancedMapping.from(Controller.Vive.LY).invert().to(Controller.Standard.LY); advancedMapping.from(Controller.Vive.LX).to(Controller.Standard.LX); + advancedMapping.from(Controller.Vive.RY).invert().to(Standard.RY); } function removeTranslationFromLeftStick() { From 82a8887275b8bde3917702bccf98c709c5cf7b75 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 15:50:19 -0700 Subject: [PATCH 03/30] add whens --- scripts/system/controllers/advancedMovement.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 0d516664e3..9216b45072 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -17,9 +17,9 @@ function addTranslationToLeftStick() { function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); - advancedMapping.from(Controller.Vive.LY).invert().to(Controller.Standard.LY); - advancedMapping.from(Controller.Vive.LX).to(Controller.Standard.LX); - advancedMapping.from(Controller.Vive.RY).invert().to(Standard.RY); + advancedMapping.from(Controller.Vive.LY).when(Controller.Vive.LSY).invert().to(Controller.Standard.LY); + advancedMapping.from(Controller.Vive.LX).when(Controller.Vive.LSX).to(Controller.Standard.LX); + advancedMapping.from(Controller.Vive.RY).when(Controller.Vive.RSY).invert().to(Controller.Standard.RY); } function removeTranslationFromLeftStick() { From a4a41faf247c9349aad99439784c534e6ee0fcc4 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 16:12:07 -0700 Subject: [PATCH 04/30] demo and only do for vive --- scripts/defaultScripts.js | 6 ++++-- scripts/system/controllers/advancedMovement.js | 7 ++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index e39c424521..57a5a2067a 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -26,6 +26,8 @@ Script.load("system/controllers/handControllerPointer.js"); Script.load("system/controllers/squeezeHands.js"); Script.load("system/controllers/grab.js"); Script.load("system/controllers/teleport.js"); -Script.load("system/controllers/advancedMovement.js") +if (Controller.Hardware.Vive !== undefined) { + Script.load("system/controllers/advancedMovement.js") +} Script.load("system/dialTone.js"); -Script.load("system/firstPersonHMD.js"); +Script.load("system/firstPersonHMD.js"); \ No newline at end of file diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 9216b45072..e3085ee6bf 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -17,9 +17,10 @@ function addTranslationToLeftStick() { function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); - advancedMapping.from(Controller.Vive.LY).when(Controller.Vive.LSY).invert().to(Controller.Standard.LY); - advancedMapping.from(Controller.Vive.LX).when(Controller.Vive.LSX).to(Controller.Standard.LX); - advancedMapping.from(Controller.Vive.RY).when(Controller.Vive.RSY).invert().to(Controller.Standard.RY); + var VIVE = Controller.Hardware.Vive; + advancedMapping.from(VIVE.LY).when(Controller.Vive.LSY).invert().to(Controller.Standard.LY); + advancedMapping.from(VIVE.LX).when(Controller.Vive.LSX).to(Controller.Standard.LX); + advancedMapping.from(VIVE.RY).when(Controller.Vive.RSY).invert().to(Controller.Standard.RY); } function removeTranslationFromLeftStick() { From fc65d246eecea7bddb5031af883c846f432e52a7 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 16:13:23 -0700 Subject: [PATCH 05/30] update whens --- scripts/system/controllers/advancedMovement.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index e3085ee6bf..a4923df28c 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -18,9 +18,9 @@ function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); var VIVE = Controller.Hardware.Vive; - advancedMapping.from(VIVE.LY).when(Controller.Vive.LSY).invert().to(Controller.Standard.LY); - advancedMapping.from(VIVE.LX).when(Controller.Vive.LSX).to(Controller.Standard.LX); - advancedMapping.from(VIVE.RY).when(Controller.Vive.RSY).invert().to(Controller.Standard.RY); + advancedMapping.from(VIVE.LY).when(VIVE.LSY).invert().to(Controller.Standard.LY); + advancedMapping.from(VIVE.LX).when(VIVE.LSX).to(Controller.Standard.LX); + advancedMapping.from(VIVE.RY).when(VIVE.RSY).invert().to(Controller.Standard.RY); } function removeTranslationFromLeftStick() { From 514d6ec1396be36b720beb37d1fa896057ed8bee Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 16:22:44 -0700 Subject: [PATCH 06/30] get lsy lsx rsy values --- scripts/system/controllers/advancedMovement.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index a4923df28c..387ed0f6a3 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -18,9 +18,12 @@ function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); var VIVE = Controller.Hardware.Vive; - advancedMapping.from(VIVE.LY).when(VIVE.LSY).invert().to(Controller.Standard.LY); - advancedMapping.from(VIVE.LX).when(VIVE.LSX).to(Controller.Standard.LX); - advancedMapping.from(VIVE.RY).when(VIVE.RSY).invert().to(Controller.Standard.RY); + var LSY = Controller.getValue(VIVE.LSY); + var LSX = Controller.getValue(VIVE.LSX); + var RSY = Controller.getValue(VIVE.RSY); + advancedMapping.from(VIVE.LY).when(LSY).invert().to(Controller.Standard.LY); + advancedMapping.from(VIVE.LX).when(LSX).to(Controller.Standard.LX); + advancedMapping.from(VIVE.RY).when(RSY).invert().to(Controller.Standard.RY); } function removeTranslationFromLeftStick() { From fdfcc235b661380635cd31d27f8b3404fd339b14 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 16:24:59 -0700 Subject: [PATCH 07/30] as functions --- scripts/system/controllers/advancedMovement.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 387ed0f6a3..e201f861b3 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -18,12 +18,9 @@ function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); var VIVE = Controller.Hardware.Vive; - var LSY = Controller.getValue(VIVE.LSY); - var LSX = Controller.getValue(VIVE.LSX); - var RSY = Controller.getValue(VIVE.RSY); - advancedMapping.from(VIVE.LY).when(LSY).invert().to(Controller.Standard.LY); - advancedMapping.from(VIVE.LX).when(LSX).to(Controller.Standard.LX); - advancedMapping.from(VIVE.RY).when(RSY).invert().to(Controller.Standard.RY); + advancedMapping.from(VIVE.LY).when(Controller.getValue(VIVE.LSY)).invert().to(Controller.Standard.LY); + advancedMapping.from(VIVE.LX).when(Controller.getValue(VIVE.LSX)).to(Controller.Standard.LX); + advancedMapping.from(VIVE.RY).when(Controller.getValue(VIVE.RSY)).invert().to(Controller.Standard.RY); } function removeTranslationFromLeftStick() { From e69c89a93e67e809ea8de82fb3b14de98e756854 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 17:00:17 -0700 Subject: [PATCH 08/30] y --- scripts/system/controllers/advancedMovement.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index e201f861b3..7b642b8bba 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -18,9 +18,9 @@ function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); var VIVE = Controller.Hardware.Vive; - advancedMapping.from(VIVE.LY).when(Controller.getValue(VIVE.LSY)).invert().to(Controller.Standard.LY); - advancedMapping.from(VIVE.LX).when(Controller.getValue(VIVE.LSX)).to(Controller.Standard.LX); - advancedMapping.from(VIVE.RY).when(Controller.getValue(VIVE.RSY)).invert().to(Controller.Standard.RY); + advancedMapping.from(VIVE.LY).when(Controller.getValue(VIVE.LS)).invert().to(Controller.Standard.LY); + advancedMapping.from(VIVE.LX).when(Controller.getValue(VIVE.LS)).to(Controller.Standard.LX); + advancedMapping.from(VIVE.RY).when(Controller.getValue(VIVE.RS)).invert().to(Controller.Standard.RY); } function removeTranslationFromLeftStick() { From 8ede4ddb66914a70934fc362cfb0d201389bc4be Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Wed, 17 Aug 2016 17:33:24 -0700 Subject: [PATCH 09/30] longform --- scripts/system/controllers/advancedMovement.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 7b642b8bba..40e6320df9 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -17,10 +17,13 @@ function addTranslationToLeftStick() { function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); - var VIVE = Controller.Hardware.Vive; - advancedMapping.from(VIVE.LY).when(Controller.getValue(VIVE.LS)).invert().to(Controller.Standard.LY); - advancedMapping.from(VIVE.LX).when(Controller.getValue(VIVE.LS)).to(Controller.Standard.LX); - advancedMapping.from(VIVE.RY).when(Controller.getValue(VIVE.RS)).invert().to(Controller.Standard.RY); + advancedMapping.from(Controller.Hardware.Vive.LY).when(Controller.getValue(Controller.Hardware.Vive.LSY)).invert().to(Controller.Standard.LY); + advancedMapping.from(Controller.Hardware.Vive.LX).when(Controller.getValue(Controller.Hardware.Vive.LSX)).to(Controller.Standard.LX); + advancedMapping.from(Controller.Hardware.Vive.RY).when(Controller.getValue(Controller.Hardware.Vive.RSY)).invert().to(Controller.Standard.RY); +} + +function testPrint(what){ + print('it was controller: ' + what) } function removeTranslationFromLeftStick() { From cfbc589829cba88182b35d3e6130295dd8ef1d96 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 08:43:26 -0700 Subject: [PATCH 10/30] debug prints --- .../system/controllers/advancedMovement.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 40e6320df9..cca8dd0f52 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -17,13 +17,22 @@ function addTranslationToLeftStick() { function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); - advancedMapping.from(Controller.Hardware.Vive.LY).when(Controller.getValue(Controller.Hardware.Vive.LSY)).invert().to(Controller.Standard.LY); - advancedMapping.from(Controller.Hardware.Vive.LX).when(Controller.getValue(Controller.Hardware.Vive.LSX)).to(Controller.Standard.LX); - advancedMapping.from(Controller.Hardware.Vive.RY).when(Controller.getValue(Controller.Hardware.Vive.RSY)).invert().to(Controller.Standard.RY); + advancedMapping.from(Controller.Hardware.Vive.LY).when(Controller.getValue(Controller.Hardware.Vive.LSY)).invert().to( + function(val) { + testPrint('LY:' + val); + }); + advancedMapping.from(Controller.Hardware.Vive.LX).when(Controller.getValue(Controller.Hardware.Vive.LSX)).to( + function(val) { + testPrint('LX' + val) + }); + advancedMapping.from(Controller.Hardware.Vive.RY).when(Controller.getValue(Controller.Hardware.Vive.RSY)).invert().to( + function(val) { + testPrint('RY' + val) + }); } -function testPrint(what){ - print('it was controller: ' + what) +function testPrint(what) { + print(what) } function removeTranslationFromLeftStick() { From 9e14191217c9796c7779dbe2bbe9a8d4a3b5c9b7 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 08:57:37 -0700 Subject: [PATCH 11/30] recondition --- .../system/controllers/advancedMovement.js | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index cca8dd0f52..620bd2723f 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -17,22 +17,13 @@ function addTranslationToLeftStick() { function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); - advancedMapping.from(Controller.Hardware.Vive.LY).when(Controller.getValue(Controller.Hardware.Vive.LSY)).invert().to( - function(val) { - testPrint('LY:' + val); - }); - advancedMapping.from(Controller.Hardware.Vive.LX).when(Controller.getValue(Controller.Hardware.Vive.LSX)).to( - function(val) { - testPrint('LX' + val) - }); - advancedMapping.from(Controller.Hardware.Vive.RY).when(Controller.getValue(Controller.Hardware.Vive.RSY)).invert().to( - function(val) { - testPrint('RY' + val) - }); + advancedMapping.from(Controller.Hardware.Vive.LY).when(Controller.getValue(Controller.Hardware.Vive.LSY)===1).invert().to(Controller.Standard.LY); + advancedMapping.from(Controller.Hardware.Vive.LX).when(Controller.getValue(Controller.Hardware.Vive.LSX)===1).to(Controller.Standard.LX); + advancedMapping.from(Controller.Hardware.Vive.RY).when(Controller.getValue(Controller.Hardware.Vive.RSY)===1).invert().to(Controller.Standard.RY); } -function testPrint(what) { - print(what) +function testPrint(what){ + print('it was controller: ' + what) } function removeTranslationFromLeftStick() { From 7768e65e8bf0574df4766b2b0e66c7aef48efc19 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 09:22:43 -0700 Subject: [PATCH 12/30] update name --- scripts/defaultScripts.js | 4 +--- scripts/system/controllers/advancedMovement.js | 10 +++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 57a5a2067a..feb9d8c2d6 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -26,8 +26,6 @@ Script.load("system/controllers/handControllerPointer.js"); Script.load("system/controllers/squeezeHands.js"); Script.load("system/controllers/grab.js"); Script.load("system/controllers/teleport.js"); -if (Controller.Hardware.Vive !== undefined) { - Script.load("system/controllers/advancedMovement.js") -} +Script.load("system/controllers/advancedMovement.js") Script.load("system/dialTone.js"); Script.load("system/firstPersonHMD.js"); \ No newline at end of file diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 620bd2723f..73856cb045 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -3,7 +3,7 @@ var mappingName, advancedMapping; function addAdvancedMovementItemToSettingsMenu() { Menu.addMenuItem({ menuName: "Settings", - menuItemName: "Advanced Movement", + menuItemName: "Advanced Movement (Vive)", isCheckable: true, isChecked: false }); @@ -31,14 +31,14 @@ function removeTranslationFromLeftStick() { } function scriptEnding() { - Menu.removeMenuItem("Settings", "Advanced Movement"); + Menu.removeMenuItem("Settings", "Advanced Movement (Vive)"); removeTranslationFromLeftStick(); } function menuItemEvent(menuItem) { - if (menuItem == "Advanced Movement") { - print(" checked=" + Menu.isOptionChecked("Advanced Movement")); - var isChecked = Menu.isOptionChecked("Advanced Movement"); + if (menuItem == "Advanced Movement (Vive)") { + print(" checked=" + Menu.isOptionChecked("Advanced Movement (Vive)")); + var isChecked = Menu.isOptionChecked("Advanced Movement (Vive)"); if (isChecked === true) { addTranslationToLeftStick(); } else if (isChecked === false) { From 09cd0b8f4ada47ce56d29890ce00b4aefe3b3e6e Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 09:24:01 -0700 Subject: [PATCH 13/30] debug prints 2 --- scripts/system/controllers/advancedMovement.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 73856cb045..3c804e1e6d 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -17,12 +17,18 @@ function addTranslationToLeftStick() { function registerMappings() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); advancedMapping = Controller.newMapping(mappingName); - advancedMapping.from(Controller.Hardware.Vive.LY).when(Controller.getValue(Controller.Hardware.Vive.LSY)===1).invert().to(Controller.Standard.LY); - advancedMapping.from(Controller.Hardware.Vive.LX).when(Controller.getValue(Controller.Hardware.Vive.LSX)===1).to(Controller.Standard.LX); - advancedMapping.from(Controller.Hardware.Vive.RY).when(Controller.getValue(Controller.Hardware.Vive.RSY)===1).invert().to(Controller.Standard.RY); + advancedMapping.from(Controller.Hardware.Vive.LY).when(Controller.getValue(Controller.Hardware.Vive.LSY) === 1).invert().to(function(val) { + testPrint('ly:' + val) + }); + advancedMapping.from(Controller.Hardware.Vive.LX).when(Controller.getValue(Controller.Hardware.Vive.LSX) === 1).to(function(val) { + testPrint('lx:' + val) + }); + advancedMapping.from(Controller.Hardware.Vive.RY).when(Controller.getValue(Controller.Hardware.Vive.RSY) === 1).invert().to(function(val) { + testPrint('ry:' + val) + }); } -function testPrint(what){ +function testPrint(what) { print('it was controller: ' + what) } From 1eaac8605fdfc032c34e8663a321d1b0d4035f52 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 10:43:37 -0700 Subject: [PATCH 14/30] invert the structure and make it work with oculus --- interface/resources/controllers/standard.json | 2 +- interface/resources/controllers/vive.json | 13 +-- .../system/controllers/advancedMovement.js | 85 +++++++++++++------ 3 files changed, 70 insertions(+), 30 deletions(-) diff --git a/interface/resources/controllers/standard.json b/interface/resources/controllers/standard.json index 222357ac9d..c9e91c8666 100644 --- a/interface/resources/controllers/standard.json +++ b/interface/resources/controllers/standard.json @@ -11,7 +11,7 @@ [ { "type": "deadZone", "min": 0.15 }, "constrainToInteger", - { "type": "pulse", "interval": 0.5 }, + { "type": "pulse", "interval": 0.25 }, { "type": "scale", "scale": 22.5 } ] }, diff --git a/interface/resources/controllers/vive.json b/interface/resources/controllers/vive.json index 9cf641d2b0..dce3e9660c 100644 --- a/interface/resources/controllers/vive.json +++ b/interface/resources/controllers/vive.json @@ -1,9 +1,11 @@ { "name": "Vive to Standard", "channels": [ + { "from": "Vive.LY", "when": "Vive.LSY", "filters": ["invert"], "to": "Standard.LY" }, + { "from": "Vive.LX", "when": "Vive.LSX", "to": "Standard.LX" }, { - "from": "Vive.LT", "to": "Standard.LT", - "filters": [ + "from": "Vive.LT", "to": "Standard.LT", + "filters": [ { "type": "deadZone", "min": 0.05 } ] }, @@ -13,10 +15,11 @@ { "from": "Vive.LS", "to": "Standard.LS" }, { "from": "Vive.LSTouch", "to": "Standard.LSTouch" }, + { "from": "Vive.RY", "when": "Vive.RSY", "filters": ["invert"], "to": "Standard.RY" }, { "from": "Vive.RX", "when": "Vive.RSX", "to": "Standard.RX" }, { - "from": "Vive.RT", "to": "Standard.RT", - "filters": [ + "from": "Vive.RT", "to": "Standard.RT", + "filters": [ { "type": "deadZone", "min": 0.05 } ] }, @@ -34,4 +37,4 @@ { "from": "Vive.LeftHand", "to": "Standard.LeftHand" }, { "from": "Vive.RightHand", "to": "Standard.RightHand" } ] -} +} \ No newline at end of file diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 3c804e1e6d..0eb50434b2 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -1,54 +1,78 @@ -var mappingName, advancedMapping; +//advanced movements settings are in individual controller json files +//what we do is check the status of the 'advance movement' checkbox when you enter HMD mode +//if 'advanced movement' is checked...we give you the defaults that are in the json. +//if 'advanced movement' is not checked... we override the advanced controls with basic ones. +//when the script stops, + +//todo: store in prefs +// + + +var mappingName, basicMapping; function addAdvancedMovementItemToSettingsMenu() { Menu.addMenuItem({ menuName: "Settings", - menuItemName: "Advanced Movement (Vive)", + menuItemName: "Advanced Movement For Hand Controllers", isCheckable: true, isChecked: false }); } -function addTranslationToLeftStick() { - Controller.enableMapping(mappingName); +function rotate180() { + MyAvatar.orientation = Quat.inverse(MyAvatar.orientation); } -function registerMappings() { +function registerBasicMapping() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); - advancedMapping = Controller.newMapping(mappingName); - advancedMapping.from(Controller.Hardware.Vive.LY).when(Controller.getValue(Controller.Hardware.Vive.LSY) === 1).invert().to(function(val) { - testPrint('ly:' + val) - }); - advancedMapping.from(Controller.Hardware.Vive.LX).when(Controller.getValue(Controller.Hardware.Vive.LSX) === 1).to(function(val) { - testPrint('lx:' + val) - }); - advancedMapping.from(Controller.Hardware.Vive.RY).when(Controller.getValue(Controller.Hardware.Vive.RSY) === 1).invert().to(function(val) { - testPrint('ry:' + val) + basicMapping = Controller.newMapping(mappingName); + basicMapping.from(Controller.Standard.LY).to(function(value) { + var stick = Controller.getValue(Controller.Standard.LS); + if (value === 1) { + rotate180(); + } + print('should do LY stuff' + value + ":stick:" + stick); + return; }); + basicMapping.from(Controller.Standard.LX).to(Controller.Standard.RX); + basicMapping.from(Controller.Standard.RY).to(function(value) { + var stick = Controller.getValue(Controller.Standard.RS); + if (value === 1) { + rotate180(); + } + print('should do RY stuff' + value + ":stick:" + stick); + return; + }) } function testPrint(what) { print('it was controller: ' + what) } -function removeTranslationFromLeftStick() { +function enableMappings() { + Controller.enableMapping(mappingName); +} + +function disableMappings() { Controller.disableMapping(mappingName); } function scriptEnding() { - Menu.removeMenuItem("Settings", "Advanced Movement (Vive)"); - removeTranslationFromLeftStick(); + Menu.removeMenuItem("Settings", "Advanced Movement For Hand Controllers"); + disableMappings(); } +var isChecked = false; + function menuItemEvent(menuItem) { - if (menuItem == "Advanced Movement (Vive)") { - print(" checked=" + Menu.isOptionChecked("Advanced Movement (Vive)")); - var isChecked = Menu.isOptionChecked("Advanced Movement (Vive)"); + if (menuItem == "Advanced Movement For Hand Controllers") { + print(" checked=" + Menu.isOptionChecked("Advanced Movement For Hand Controllers")); + isChecked = Menu.isOptionChecked("Advanced Movement For Hand Controllers"); if (isChecked === true) { - addTranslationToLeftStick(); + disableMappings(); } else if (isChecked === false) { - removeTranslationFromLeftStick(); + enableMappings(); } } @@ -56,9 +80,22 @@ function menuItemEvent(menuItem) { addAdvancedMovementItemToSettingsMenu(); -// register our scriptEnding callback Script.scriptEnding.connect(scriptEnding); Menu.menuItemEvent.connect(menuItemEvent); -registerMappings(); \ No newline at end of file +registerBasicMapping(); +enableMappings(); + +HMD.displayModeChanged.connect(function(isHMDMode) { + if (isHMDMode) { + if (Controller.Hardware.Vive !== undefined || Controller.Hardware.OculusTouch !== undefined) { + if (isChecked === true) { + disableMappings(); + } else if (isChecked === false) { + enableMappings(); + } + + } + } +}); \ No newline at end of file From 37846d9f0ca6ad88d177e5046dd30eaebd1242f4 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 11:07:50 -0700 Subject: [PATCH 15/30] store settings --- .../system/controllers/advancedMovement.js | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/advancedMovement.js index 0eb50434b2..d53fa3a2f9 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/advancedMovement.js @@ -8,14 +8,27 @@ // -var mappingName, basicMapping; +var mappingName, basicMapping,isChecked; + +var previousSetting = Settings.getValue('advancedMovementForHandControllersIsChecked'); +if (previousSetting === '') { + previousSetting = false; + isChecked=false; +} + +if(previousSetting===true){ + isChecked=true; +} +if(previousSetting===false){ + isChecked=false; +} function addAdvancedMovementItemToSettingsMenu() { Menu.addMenuItem({ menuName: "Settings", menuItemName: "Advanced Movement For Hand Controllers", isCheckable: true, - isChecked: false + isChecked: previousSetting }); } @@ -63,15 +76,16 @@ function scriptEnding() { disableMappings(); } -var isChecked = false; function menuItemEvent(menuItem) { if (menuItem == "Advanced Movement For Hand Controllers") { print(" checked=" + Menu.isOptionChecked("Advanced Movement For Hand Controllers")); isChecked = Menu.isOptionChecked("Advanced Movement For Hand Controllers"); if (isChecked === true) { + Settings.setValue('advancedMovementForHandControllersIsChecked', true); disableMappings(); } else if (isChecked === false) { + Settings.setValue('advancedMovementForHandControllersIsChecked', false); enableMappings(); } } @@ -85,7 +99,14 @@ Script.scriptEnding.connect(scriptEnding); Menu.menuItemEvent.connect(menuItemEvent); registerBasicMapping(); -enableMappings(); +if (previousSetting === true) { + print('JBP WAS SET TO TRUE') + disableMappings(); +} else if (previousSetting === false) { + print('JBP WAS SET TO FALSE') + enableMappings(); +} + HMD.displayModeChanged.connect(function(isHMDMode) { if (isHMDMode) { From b8213aed7bcc39349ef11d9524675104d1bc2ee0 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 11:59:58 -0700 Subject: [PATCH 16/30] naming and some logging for teleport stuff --- scripts/defaultScripts.js | 2 +- scripts/system/controllers/teleport.js | 9 ++- ...ggleAdvancedMovementForHandControllers.js} | 61 +++++++++++++------ 3 files changed, 50 insertions(+), 22 deletions(-) rename scripts/system/controllers/{advancedMovement.js => toggleAdvancedMovementForHandControllers.js} (65%) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index feb9d8c2d6..aba1e1ba51 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -21,11 +21,11 @@ Script.load("system/edit.js"); Script.load("system/mod.js"); Script.load("system/selectAudioDevice.js"); Script.load("system/notifications.js"); +Script.load("system/controllers/toggleAdvancedMovementForHandControllers.js") Script.load("system/controllers/handControllerGrab.js"); Script.load("system/controllers/handControllerPointer.js"); Script.load("system/controllers/squeezeHands.js"); Script.load("system/controllers/grab.js"); Script.load("system/controllers/teleport.js"); -Script.load("system/controllers/advancedMovement.js") Script.load("system/dialTone.js"); Script.load("system/firstPersonHMD.js"); \ No newline at end of file diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index d1dd5b6348..d223b59bca 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -202,6 +202,7 @@ function Teleporter() { this.turnOffOverlayBeams(); this.updateConnected = null; + _this.inCoolIn = false; Script.setTimeout(function() { inTeleportMode = false; @@ -209,8 +210,6 @@ function Teleporter() { }, 200); }; - - this.update = function() { if (isDisabled === 'both') { return; @@ -223,12 +222,15 @@ function Teleporter() { teleporter.leftRay(); if ((leftPad.buttonValue === 0) && inTeleportMode === true) { if (_this.inCoolIn === true) { + print('released during cool in period. exit.') _this.exitTeleportMode(); _this.deleteTargetOverlay(); _this.deleteCancelOverlay(); } else { + print('release while not in cool in and in teleport mode. should teleport') _this.teleport(); } + print('some other state::' + leftPad.buttonValue + "///" + inTeleportMode) return; } @@ -239,12 +241,15 @@ function Teleporter() { teleporter.rightRay(); if ((rightPad.buttonValue === 0) && inTeleportMode === true) { if (_this.inCoolIn === true) { + print('released during cool in period. exit.') _this.exitTeleportMode(); _this.deleteTargetOverlay(); _this.deleteCancelOverlay(); } else { + print('release while not in cool in and in teleport mode. should teleport') _this.teleport(); } + print('some other state::' + rightPad.buttonValue + "///" + inTeleportMode) return; } } diff --git a/scripts/system/controllers/advancedMovement.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js similarity index 65% rename from scripts/system/controllers/advancedMovement.js rename to scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index d53fa3a2f9..57aa4cd2c1 100644 --- a/scripts/system/controllers/advancedMovement.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -1,26 +1,26 @@ +// Created by james b. pollack @imgntn on 7/2/2016 +// Copyright 2016 High Fidelity, Inc. //advanced movements settings are in individual controller json files //what we do is check the status of the 'advance movement' checkbox when you enter HMD mode //if 'advanced movement' is checked...we give you the defaults that are in the json. //if 'advanced movement' is not checked... we override the advanced controls with basic ones. -//when the script stops, - -//todo: store in prefs // +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html - -var mappingName, basicMapping,isChecked; +var mappingName, basicMapping, isChecked; var previousSetting = Settings.getValue('advancedMovementForHandControllersIsChecked'); if (previousSetting === '') { previousSetting = false; - isChecked=false; + isChecked = false; } -if(previousSetting===true){ - isChecked=true; +if (previousSetting === true) { + isChecked = true; } -if(previousSetting===false){ - isChecked=false; +if (previousSetting === false) { + isChecked = false; } function addAdvancedMovementItemToSettingsMenu() { @@ -37,31 +37,57 @@ function rotate180() { MyAvatar.orientation = Quat.inverse(MyAvatar.orientation); } +var inFlipTurn = false; + function registerBasicMapping() { mappingName = 'Hifi-AdvancedMovement-Dev-' + Math.random(); basicMapping = Controller.newMapping(mappingName); basicMapping.from(Controller.Standard.LY).to(function(value) { var stick = Controller.getValue(Controller.Standard.LS); - if (value === 1) { + if (value === 1 && Controller.Hardware.OculusTouch !== undefined) { rotate180(); } - print('should do LY stuff' + value + ":stick:" + stick); + if (Controller.Hardware.Vive !== undefined) { + if (value > 0.75 && inFlipTurn === false) { + print('vive should flip turn') + inFlipTurn = true; + rotate180(); + Script.setTimeout(function() { + print('vive should be able to flip turn again') + inFlipTurn = false; + }, 250) + } else { + print('vive should not flip turn') + + } + } return; }); basicMapping.from(Controller.Standard.LX).to(Controller.Standard.RX); basicMapping.from(Controller.Standard.RY).to(function(value) { var stick = Controller.getValue(Controller.Standard.RS); - if (value === 1) { + if (value === 1 && Controller.Hardware.OculusTouch !== undefined) { rotate180(); } + if (Controller.Hardware.Vive !== undefined) { + if (value > 0.75 && inFlipTurn === false) { + print('vive should flip turn') + inFlipTurn = true; + rotate180(); + Script.setTimeout(function() { + print('vive should be able to flip turn again') + inFlipTurn = false; + }, 250) + } else { + print('vive should not flip turn') + + } + } print('should do RY stuff' + value + ":stick:" + stick); return; }) } -function testPrint(what) { - print('it was controller: ' + what) -} function enableMappings() { Controller.enableMapping(mappingName); @@ -79,7 +105,6 @@ function scriptEnding() { function menuItemEvent(menuItem) { if (menuItem == "Advanced Movement For Hand Controllers") { - print(" checked=" + Menu.isOptionChecked("Advanced Movement For Hand Controllers")); isChecked = Menu.isOptionChecked("Advanced Movement For Hand Controllers"); if (isChecked === true) { Settings.setValue('advancedMovementForHandControllersIsChecked', true); @@ -100,10 +125,8 @@ Menu.menuItemEvent.connect(menuItemEvent); registerBasicMapping(); if (previousSetting === true) { - print('JBP WAS SET TO TRUE') disableMappings(); } else if (previousSetting === false) { - print('JBP WAS SET TO FALSE') enableMappings(); } From 992504e1794f1ebbf6489b7fa162ecb7d0844ca3 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 13:35:51 -0700 Subject: [PATCH 17/30] adjust coolin --- scripts/system/controllers/teleport.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index d223b59bca..71096d2ed7 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -39,7 +39,7 @@ var COLORS_TELEPORT_TOO_CLOSE = { var TELEPORT_CANCEL_RANGE = 1.5; var USE_COOL_IN = true; -var COOL_IN_DURATION = 1750; +var COOL_IN_DURATION = 500; function ThumbPad(hand) { this.hand = hand; @@ -111,6 +111,12 @@ function Teleporter() { } inTeleportMode = true; + this.inCoolIn = true; + print('setting cool in timeout') + this.coolInTimeout = Script.setTimeout(function() { + print('should exit cool in mode now' + COOL_IN_DURATION) + _this.inCoolIn = false; + }, COOL_IN_DURATION) if (this.smoothArrivalInterval !== null) { Script.clearInterval(this.smoothArrivalInterval); @@ -123,10 +129,9 @@ function Teleporter() { this.initialize(); Script.update.connect(this.update); this.updateConnected = true; - this.inCoolIn = true; - Script.setTimeout(function() { - _this.inCoolIn = false; - }, COOL_IN_DURATION) + + + }; this.createTargetOverlay = function() { @@ -202,7 +207,7 @@ function Teleporter() { this.turnOffOverlayBeams(); this.updateConnected = null; - _this.inCoolIn = false; + this.inCoolIn = false; Script.setTimeout(function() { inTeleportMode = false; From 2e22bc5e46849e0c994b5fd3b78899b66fc2bde3 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 14:08:31 -0700 Subject: [PATCH 18/30] new coolin --- scripts/system/controllers/teleport.js | 46 +++++++++++++++++++------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index 71096d2ed7..1511d1c2fc 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -294,15 +294,26 @@ function Teleporter() { this.createCancelOverlay(); } } else { - this.deleteCancelOverlay(); - - this.rightLineOn(rightPickRay.origin, rightIntersection.intersection, COLORS_TELEPORT_CAN_TELEPORT); - if (this.targetOverlay !== null) { - this.updateTargetOverlay(rightIntersection); + if (this.inCoolIn === true) { + this.deleteTargetOverlay(); + this.rightLineOn(rightPickRay.origin, rightIntersection.intersection, COLORS_TELEPORT_TOO_CLOSE); + if (this.cancelOverlay !== null) { + this.updateCancelOverlay(rightIntersection); + } else { + this.createCancelOverlay(); + } } else { - this.createTargetOverlay(); + this.deleteCancelOverlay(); + + this.rightLineOn(rightPickRay.origin, rightIntersection.intersection, COLORS_TELEPORT_CAN_TELEPORT); + if (this.targetOverlay !== null) { + this.updateTargetOverlay(rightIntersection); + } else { + this.createTargetOverlay(); + } } + } } else { @@ -346,15 +357,26 @@ function Teleporter() { this.createCancelOverlay(); } } else { - this.deleteCancelOverlay(); - this.leftLineOn(leftPickRay.origin, leftIntersection.intersection, COLORS_TELEPORT_CAN_TELEPORT); - - if (this.targetOverlay !== null) { - this.updateTargetOverlay(leftIntersection); + if (this.inCoolIn === true) { + this.deleteTargetOverlay(); + this.leftLineOn(leftPickRay.origin, leftIntersection.intersection, COLORS_TELEPORT_TOO_CLOSE); + if (this.cancelOverlay !== null) { + this.updateCancelOverlay(leftIntersection); + } else { + this.createCancelOverlay(); + } } else { - this.createTargetOverlay(); + this.deleteCancelOverlay(); + this.leftLineOn(leftPickRay.origin, leftIntersection.intersection, COLORS_TELEPORT_CAN_TELEPORT); + + if (this.targetOverlay !== null) { + this.updateTargetOverlay(leftIntersection); + } else { + this.createTargetOverlay(); + } } + } From 859d3ccadc8cd4d45085d73f6989be7d155c1c3b Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 14:36:52 -0700 Subject: [PATCH 19/30] tweaks --- scripts/system/controllers/teleport.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index 1511d1c2fc..4e5f6e8fef 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -72,6 +72,8 @@ function Trigger(hand) { }; } +var coolInTimeout = null; + function Teleporter() { var _this = this; this.intersection = null; @@ -85,6 +87,7 @@ function Teleporter() { this.tooClose = false; this.inCoolIn = false; + this.initialize = function() { this.createMappings(); this.disableGrab(); @@ -113,7 +116,11 @@ function Teleporter() { inTeleportMode = true; this.inCoolIn = true; print('setting cool in timeout') - this.coolInTimeout = Script.setTimeout(function() { + if (coolInTimeout !== null) { + Script.clearTimeout(coolInTimeout); + + } + coolInTimeout = Script.setTimeout(function() { print('should exit cool in mode now' + COOL_IN_DURATION) _this.inCoolIn = false; }, COOL_IN_DURATION) @@ -208,9 +215,9 @@ function Teleporter() { this.updateConnected = null; this.inCoolIn = false; + inTeleportMode = false; Script.setTimeout(function() { - inTeleportMode = false; _this.enableGrab(); }, 200); }; From c89103481bbcf934858e2ba9579dc95a10348c7d Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 14:40:08 -0700 Subject: [PATCH 20/30] change load order --- scripts/defaultScripts.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index aba1e1ba51..a194b64435 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -21,11 +21,11 @@ Script.load("system/edit.js"); Script.load("system/mod.js"); Script.load("system/selectAudioDevice.js"); Script.load("system/notifications.js"); -Script.load("system/controllers/toggleAdvancedMovementForHandControllers.js") Script.load("system/controllers/handControllerGrab.js"); Script.load("system/controllers/handControllerPointer.js"); Script.load("system/controllers/squeezeHands.js"); Script.load("system/controllers/grab.js"); Script.load("system/controllers/teleport.js"); +Script.load("system/controllers/toggleAdvancedMovementForHandControllers.js") Script.load("system/dialTone.js"); Script.load("system/firstPersonHMD.js"); \ No newline at end of file From bae51bcfd4b1c7da20404a6050561533a24b0d7b Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 15:29:49 -0700 Subject: [PATCH 21/30] remove prints --- scripts/system/controllers/teleport.js | 8 -------- .../toggleAdvancedMovementForHandControllers.js | 11 ++--------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index 4e5f6e8fef..98af1eb19b 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -115,13 +115,11 @@ function Teleporter() { inTeleportMode = true; this.inCoolIn = true; - print('setting cool in timeout') if (coolInTimeout !== null) { Script.clearTimeout(coolInTimeout); } coolInTimeout = Script.setTimeout(function() { - print('should exit cool in mode now' + COOL_IN_DURATION) _this.inCoolIn = false; }, COOL_IN_DURATION) @@ -234,15 +232,12 @@ function Teleporter() { teleporter.leftRay(); if ((leftPad.buttonValue === 0) && inTeleportMode === true) { if (_this.inCoolIn === true) { - print('released during cool in period. exit.') _this.exitTeleportMode(); _this.deleteTargetOverlay(); _this.deleteCancelOverlay(); } else { - print('release while not in cool in and in teleport mode. should teleport') _this.teleport(); } - print('some other state::' + leftPad.buttonValue + "///" + inTeleportMode) return; } @@ -253,15 +248,12 @@ function Teleporter() { teleporter.rightRay(); if ((rightPad.buttonValue === 0) && inTeleportMode === true) { if (_this.inCoolIn === true) { - print('released during cool in period. exit.') _this.exitTeleportMode(); _this.deleteTargetOverlay(); _this.deleteCancelOverlay(); } else { - print('release while not in cool in and in teleport mode. should teleport') _this.teleport(); } - print('some other state::' + rightPad.buttonValue + "///" + inTeleportMode) return; } } diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index 57aa4cd2c1..696cac714a 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -1,5 +1,6 @@ -// Created by james b. pollack @imgntn on 7/2/2016 +// Created by james b. pollack @imgntn on 8/18/2016 // Copyright 2016 High Fidelity, Inc. +// //advanced movements settings are in individual controller json files //what we do is check the status of the 'advance movement' checkbox when you enter HMD mode //if 'advanced movement' is checked...we give you the defaults that are in the json. @@ -49,15 +50,12 @@ function registerBasicMapping() { } if (Controller.Hardware.Vive !== undefined) { if (value > 0.75 && inFlipTurn === false) { - print('vive should flip turn') inFlipTurn = true; rotate180(); Script.setTimeout(function() { - print('vive should be able to flip turn again') inFlipTurn = false; }, 250) } else { - print('vive should not flip turn') } } @@ -71,19 +69,15 @@ function registerBasicMapping() { } if (Controller.Hardware.Vive !== undefined) { if (value > 0.75 && inFlipTurn === false) { - print('vive should flip turn') inFlipTurn = true; rotate180(); Script.setTimeout(function() { - print('vive should be able to flip turn again') inFlipTurn = false; }, 250) } else { - print('vive should not flip turn') } } - print('should do RY stuff' + value + ":stick:" + stick); return; }) } @@ -114,7 +108,6 @@ function menuItemEvent(menuItem) { enableMappings(); } } - } addAdvancedMovementItemToSettingsMenu(); From 3a8de5ab0d15acb1eb9859df39c0c67a5ed8d9f4 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 15:58:12 -0700 Subject: [PATCH 22/30] fix rotation function --- .../toggleAdvancedMovementForHandControllers.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index 696cac714a..f5fdc6301a 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -35,7 +35,12 @@ function addAdvancedMovementItemToSettingsMenu() { } function rotate180() { - MyAvatar.orientation = Quat.inverse(MyAvatar.orientation); + var newOrientation = Quat.multiply(MyAvatar.orientation, Quat.angleAxis(180, { + x: 0, + y: 1, + z: 0 + })) + MyAvatar.orientation = newOrientation } var inFlipTurn = false; From 214a7051997a9ffd849974e482643bdc7862972a Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 16:50:50 -0700 Subject: [PATCH 23/30] slow 180 rate --- ...toggleAdvancedMovementForHandControllers.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index f5fdc6301a..383e4f78f2 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -11,6 +11,8 @@ var mappingName, basicMapping, isChecked; +var TURN_RATE = 1000; + var previousSetting = Settings.getValue('advancedMovementForHandControllersIsChecked'); if (previousSetting === '') { previousSetting = false; @@ -59,7 +61,7 @@ function registerBasicMapping() { rotate180(); Script.setTimeout(function() { inFlipTurn = false; - }, 250) + }, TURN_RATE) } else { } @@ -122,11 +124,15 @@ Script.scriptEnding.connect(scriptEnding); Menu.menuItemEvent.connect(menuItemEvent); registerBasicMapping(); -if (previousSetting === true) { - disableMappings(); -} else if (previousSetting === false) { - enableMappings(); -} + +Script.setTimeout(function() { + if (previousSetting === true) { + disableMappings(); + } else(previousSetting === false) { + enableMappings(); + } + +}, 0) HMD.displayModeChanged.connect(function(isHMDMode) { From a0d4fd4c0e999e7f5b25cb7b5b18db0994fc5eb6 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 16:51:04 -0700 Subject: [PATCH 24/30] fix bug --- .../controllers/toggleAdvancedMovementForHandControllers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index 383e4f78f2..44a18e5a5a 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -128,7 +128,7 @@ registerBasicMapping(); Script.setTimeout(function() { if (previousSetting === true) { disableMappings(); - } else(previousSetting === false) { + } else { enableMappings(); } From 855561c0146fcdc9497eb5e287be84aec80cf0e2 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 16:52:32 -0700 Subject: [PATCH 25/30] moar --- .../controllers/toggleAdvancedMovementForHandControllers.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index 44a18e5a5a..71b18aaac6 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -23,6 +23,7 @@ if (previousSetting === true) { isChecked = true; } if (previousSetting === false) { + previousSetting = false; isChecked = false; } @@ -132,7 +133,7 @@ Script.setTimeout(function() { enableMappings(); } -}, 0) +}, 100) HMD.displayModeChanged.connect(function(isHMDMode) { From b694b8e54146ed5663a49c008ccc2f65585fda4c Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 18 Aug 2016 17:24:18 -0700 Subject: [PATCH 26/30] update turn rate for left stick --- scripts/system/controllers/teleport.js | 2 +- .../controllers/toggleAdvancedMovementForHandControllers.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index 98af1eb19b..77d0109b9f 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -37,7 +37,7 @@ var COLORS_TELEPORT_TOO_CLOSE = { blue: 73 }; -var TELEPORT_CANCEL_RANGE = 1.5; +var TELEPORT_CANCEL_RANGE = 1; var USE_COOL_IN = true; var COOL_IN_DURATION = 500; diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index 71b18aaac6..91b635a919 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -23,7 +23,6 @@ if (previousSetting === true) { isChecked = true; } if (previousSetting === false) { - previousSetting = false; isChecked = false; } @@ -81,7 +80,7 @@ function registerBasicMapping() { rotate180(); Script.setTimeout(function() { inFlipTurn = false; - }, 250) + }, TURN_RATE) } else { } From 653b1acc4ab5793ac16a4ce1f785966579089896 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Fri, 19 Aug 2016 14:29:14 -0700 Subject: [PATCH 27/30] cleanup --- ...oggleAdvancedMovementForHandControllers.js | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index 91b635a919..19f28e51e7 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -12,8 +12,9 @@ var mappingName, basicMapping, isChecked; var TURN_RATE = 1000; - -var previousSetting = Settings.getValue('advancedMovementForHandControllersIsChecked'); +var MENU_ITEM_NAME = "Advanced Movement For Hand Controllers"; +var SETTINGS_KEY = 'advancedMovementForHandControllersIsChecked'; +var previousSetting = Settings.getValue(SETTINGS_KEY); if (previousSetting === '') { previousSetting = false; isChecked = false; @@ -29,7 +30,7 @@ if (previousSetting === false) { function addAdvancedMovementItemToSettingsMenu() { Menu.addMenuItem({ menuName: "Settings", - menuItemName: "Advanced Movement For Hand Controllers", + menuItemName: MENU_ITEM_NAME, isCheckable: true, isChecked: previousSetting }); @@ -54,16 +55,13 @@ function registerBasicMapping() { var stick = Controller.getValue(Controller.Standard.LS); if (value === 1 && Controller.Hardware.OculusTouch !== undefined) { rotate180(); - } - if (Controller.Hardware.Vive !== undefined) { + } else if (Controller.Hardware.Vive !== undefined) { if (value > 0.75 && inFlipTurn === false) { inFlipTurn = true; rotate180(); Script.setTimeout(function() { inFlipTurn = false; }, TURN_RATE) - } else { - } } return; @@ -73,16 +71,13 @@ function registerBasicMapping() { var stick = Controller.getValue(Controller.Standard.RS); if (value === 1 && Controller.Hardware.OculusTouch !== undefined) { rotate180(); - } - if (Controller.Hardware.Vive !== undefined) { + } else if (Controller.Hardware.Vive !== undefined) { if (value > 0.75 && inFlipTurn === false) { inFlipTurn = true; rotate180(); Script.setTimeout(function() { inFlipTurn = false; }, TURN_RATE) - } else { - } } return; @@ -99,19 +94,19 @@ function disableMappings() { } function scriptEnding() { - Menu.removeMenuItem("Settings", "Advanced Movement For Hand Controllers"); + Menu.removeMenuItem("Settings", MENU_ITEM_NAME); disableMappings(); } function menuItemEvent(menuItem) { - if (menuItem == "Advanced Movement For Hand Controllers") { - isChecked = Menu.isOptionChecked("Advanced Movement For Hand Controllers"); + if (menuItem == MENU_ITEM_NAME) { + isChecked = Menu.isOptionChecked(MENU_ITEM_NAME); if (isChecked === true) { - Settings.setValue('advancedMovementForHandControllersIsChecked', true); + Settings.setValue(SETTINGS_KEY, true); disableMappings(); } else if (isChecked === false) { - Settings.setValue('advancedMovementForHandControllersIsChecked', false); + Settings.setValue(SETTINGS_KEY, false); enableMappings(); } } @@ -131,7 +126,6 @@ Script.setTimeout(function() { } else { enableMappings(); } - }, 100) From 3922192cfc89597a0d2055ff9c980a69a0cce413 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Fri, 19 Aug 2016 14:31:47 -0700 Subject: [PATCH 28/30] update --- .../controllers/toggleAdvancedMovementForHandControllers.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index 19f28e51e7..6f1f284be2 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -15,7 +15,7 @@ var TURN_RATE = 1000; var MENU_ITEM_NAME = "Advanced Movement For Hand Controllers"; var SETTINGS_KEY = 'advancedMovementForHandControllersIsChecked'; var previousSetting = Settings.getValue(SETTINGS_KEY); -if (previousSetting === '') { +if (previousSetting === '' || previousSetting === false) { previousSetting = false; isChecked = false; } @@ -23,9 +23,6 @@ if (previousSetting === '') { if (previousSetting === true) { isChecked = true; } -if (previousSetting === false) { - isChecked = false; -} function addAdvancedMovementItemToSettingsMenu() { Menu.addMenuItem({ From 2b1e629ccae2f4b875ea0dcbac0be0e47167f42e Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Fri, 19 Aug 2016 14:51:15 -0700 Subject: [PATCH 29/30] some extra checks on settings values --- .../controllers/toggleAdvancedMovementForHandControllers.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js index 6f1f284be2..3a75482770 100644 --- a/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js +++ b/scripts/system/controllers/toggleAdvancedMovementForHandControllers.js @@ -15,12 +15,13 @@ var TURN_RATE = 1000; var MENU_ITEM_NAME = "Advanced Movement For Hand Controllers"; var SETTINGS_KEY = 'advancedMovementForHandControllersIsChecked'; var previousSetting = Settings.getValue(SETTINGS_KEY); -if (previousSetting === '' || previousSetting === false) { +if (previousSetting === '' || previousSetting === false || previousSetting === 'false') { previousSetting = false; isChecked = false; } -if (previousSetting === true) { +if (previousSetting === true || previousSetting === 'true') { + previousSetting = true; isChecked = true; } From dd60683e296d582429b2bfbc184f5b906e30b3fb Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 19 Aug 2016 17:14:14 -0700 Subject: [PATCH 30/30] Move steam.js to unpublishedScripts --- scripts/defaultScripts.js | 1 - {scripts/system => unpublishedScripts}/steam.js | 0 2 files changed, 1 deletion(-) rename {scripts/system => unpublishedScripts}/steam.js (100%) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index cf707c4d19..0efcd0c140 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -15,7 +15,6 @@ Script.load("system/users.js"); Script.load("system/mute.js"); Script.load("system/goto.js"); Script.load("system/hmd.js"); -Script.load("system/steam.js"); Script.load("system/marketplace.js"); Script.load("system/edit.js"); Script.load("system/mod.js"); diff --git a/scripts/system/steam.js b/unpublishedScripts/steam.js similarity index 100% rename from scripts/system/steam.js rename to unpublishedScripts/steam.js