From 36f62f05d1b8d96199419aacab89c204bee6a58d Mon Sep 17 00:00:00 2001 From: r3tk0n Date: Thu, 7 Mar 2019 11:31:28 -0800 Subject: [PATCH 1/4] Add pushToTalk.js controllerModule. --- .../controllerModules/pushToTalk.js | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 scripts/system/controllers/controllerModules/pushToTalk.js diff --git a/scripts/system/controllers/controllerModules/pushToTalk.js b/scripts/system/controllers/controllerModules/pushToTalk.js new file mode 100644 index 0000000000..e764b228c9 --- /dev/null +++ b/scripts/system/controllers/controllerModules/pushToTalk.js @@ -0,0 +1,75 @@ +"use strict"; + +// Created by Jason C. Najera on 3/7/2019 +// Copyright 2019 High Fidelity, Inc. +// +// Handles Push-to-Talk functionality for HMD mode. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + +Script.include("/~/system/libraries/controllerDispatcherUtils.js"); +Script.include("/~/system/libraries/controllers.js"); + +(function() { // BEGIN LOCAL_SCOPE + function PushToTalkHandler() { + var _this = this; + this.active = false; + //var pttMapping, mappingName; + + this.setup = function() { + //mappingName = 'Hifi-PTT-Dev-' + Math.random(); + //pttMapping = Controller.newMapping(mappingName); + //pttMapping.enable(); + }; + + this.shouldTalk = function (controllerData) { + // Set up test against controllerData here... + var gripVal = controllerData.secondaryValues[this.hand]; + return (gripVal) ? true : false; + }; + + this.shouldStopTalking = function (controllerData) { + var gripVal = controllerData.secondaryValues[this.hand]; + return (gripVal) ? false : true; + }; + + this.isReady = function (controllerData, deltaTime) { + if (HMD.active() && Audio.pushToTalk && this.shouldTalk(controllerData)) { + Audio.pushingToTalk = true; + returnMakeRunningValues(true, [], []); + } + + return makeRunningValues(false, [], []); + }; + + this.run = function (controllerData, deltaTime) { + if (this.shouldStopTalking(controllerData) || !Audio.pushToTalk) { + Audio.pushingToTalk = false; + return makeRunningValues(false, [], []); + } + + return makeRunningValues(true, [], []); + }; + + this.cleanup = function () { + //pttMapping.disable(); + }; + + this.parameters = makeDispatcherModuleParameters( + 950, + ["head"], + [], + 100); + } + + var pushToTalk = new PushToTalkHandler(); + enableDispatcherModule("PushToTalk", pushToTalk); + + function cleanup () { + pushToTalk.cleanup(); + disableDispatcherModule("PushToTalk"); + }; + + Script.scriptEnding.connect(cleanup); +}()); // END LOCAL_SCOPE \ No newline at end of file From f444f383eba17e47a39032411ce08b33d6df2b57 Mon Sep 17 00:00:00 2001 From: r3tk0n Date: Thu, 7 Mar 2019 11:31:48 -0800 Subject: [PATCH 2/4] Enable pushToTalk.js controller module. --- scripts/system/controllers/controllerDispatcher.js | 1 + scripts/system/controllers/controllerScripts.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js index 28c3e2a299..f4c0cbb0d6 100644 --- a/scripts/system/controllers/controllerDispatcher.js +++ b/scripts/system/controllers/controllerDispatcher.js @@ -58,6 +58,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js"); // not set to false (not in use), a module cannot start. When a module is using a slot, that module's name // is stored as the value, rather than false. this.activitySlots = { + head: false, leftHand: false, rightHand: false, rightHandTrigger: false, diff --git a/scripts/system/controllers/controllerScripts.js b/scripts/system/controllers/controllerScripts.js index 86ff7701c3..d236d6b12a 100644 --- a/scripts/system/controllers/controllerScripts.js +++ b/scripts/system/controllers/controllerScripts.js @@ -34,7 +34,8 @@ var CONTOLLER_SCRIPTS = [ "controllerModules/nearGrabHyperLinkEntity.js", "controllerModules/nearTabletHighlight.js", "controllerModules/nearGrabEntity.js", - "controllerModules/farGrabEntity.js" + "controllerModules/farGrabEntity.js", + "controllerModules/pushToTalk.js" ]; var DEBUG_MENU_ITEM = "Debug defaultScripts.js"; From 55efc315f10604c663b8df2fa6f65c7dce7d4f3f Mon Sep 17 00:00:00 2001 From: r3tk0n Date: Thu, 7 Mar 2019 11:45:59 -0800 Subject: [PATCH 3/4] Fix activation / deactivation criteria for PTT controller module. --- scripts/system/controllers/controllerModules/pushToTalk.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/controllers/controllerModules/pushToTalk.js b/scripts/system/controllers/controllerModules/pushToTalk.js index e764b228c9..557476ccd7 100644 --- a/scripts/system/controllers/controllerModules/pushToTalk.js +++ b/scripts/system/controllers/controllerModules/pushToTalk.js @@ -25,12 +25,12 @@ Script.include("/~/system/libraries/controllers.js"); this.shouldTalk = function (controllerData) { // Set up test against controllerData here... - var gripVal = controllerData.secondaryValues[this.hand]; + var gripVal = controllerData.secondaryValues[LEFT_HAND] && controllerData.secondaryValues[RIGHT_HAND]; return (gripVal) ? true : false; }; this.shouldStopTalking = function (controllerData) { - var gripVal = controllerData.secondaryValues[this.hand]; + var gripVal = controllerData.secondaryValues[LEFT_HAND] && controllerData.secondaryValues[RIGHT_HAND]; return (gripVal) ? false : true; }; From a62cadc54145dcbc54bf17d6f13d1277a1832247 Mon Sep 17 00:00:00 2001 From: r3tk0n Date: Thu, 7 Mar 2019 12:35:04 -0800 Subject: [PATCH 4/4] Fix typo. --- scripts/system/controllers/controllerModules/pushToTalk.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/controllers/controllerModules/pushToTalk.js b/scripts/system/controllers/controllerModules/pushToTalk.js index 557476ccd7..dd959ae6fb 100644 --- a/scripts/system/controllers/controllerModules/pushToTalk.js +++ b/scripts/system/controllers/controllerModules/pushToTalk.js @@ -35,7 +35,7 @@ Script.include("/~/system/libraries/controllers.js"); }; this.isReady = function (controllerData, deltaTime) { - if (HMD.active() && Audio.pushToTalk && this.shouldTalk(controllerData)) { + if (HMD.active && Audio.pushToTalk && this.shouldTalk(controllerData)) { Audio.pushingToTalk = true; returnMakeRunningValues(true, [], []); }