From a73733e57bfcf287535fbc92c9ac8f38995a5596 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 28 Jan 2014 19:48:06 -0800 Subject: [PATCH] controller scripting example --- examples/controllerExample.js | 105 ++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 examples/controllerExample.js diff --git a/examples/controllerExample.js b/examples/controllerExample.js new file mode 100644 index 0000000000..c1b33b24a5 --- /dev/null +++ b/examples/controllerExample.js @@ -0,0 +1,105 @@ +// +// controllerExample.js +// hifi +// +// Created by Brad Hefta-Gaub on 1/28/14. +// Copyright (c) 2014 HighFidelity, Inc. All rights reserved. +// +// This is an example script that demonstrates use of the Controller class +// +// + +// initialize our triggers +var triggerPulled = new Array(); +var numberOfTriggers = Controller.getNumberOfTriggers(); +for (t = 0; t < numberOfTriggers; t++) { + triggerPulled[t] = false; +} + +function checkController() { + var numberOfTriggers = Controller.getNumberOfTriggers(); + var numberOfSpatialControls = Controller.getNumberOfSpatialControls(); + var controllersPerTrigger = numberOfSpatialControls / numberOfTriggers; + + // this is expected for hydras + if (numberOfTriggers == 2 && controllersPerTrigger == 2) { + for (var t = 0; t < numberOfTriggers; t++) { + var triggerValue = Controller.getTriggerValue(t); + + if (triggerPulled[t]) { + // must release to at least 0.1 + if (triggerValue < 0.1) { + triggerPulled[t] = false; // unpulled + } + } else { + // must pull to at least 0.9 + if (triggerValue > 0.9) { + triggerPulled[t] = true; // pulled + triggerToggled = true; + } + } + + if (triggerToggled) { + print("a trigger was toggled"); + } + } + } +} + +function keyPressEvent(event) { + print("keyPressEvent event.key=" + event.key); + if (event.key == "A".charCodeAt(0)) { + print("the A key was pressed"); + } + if (event.key == " ".charCodeAt(0)) { + print("the key was pressed"); + } +} + +function mouseMoveEvent(event) { + print("mouseMoveEvent event.x,y=" + event.x + ", " + event.y); +} + +function touchBeginEvent(event) { + print("touchBeginEvent event.x,y=" + event.x + ", " + event.y); +} + +function touchUpdateEvent(event) { + print("touchUpdateEvent event.x,y=" + event.x + ", " + event.y); +} + +function touchEndEvent(event) { + print("touchEndEvent event.x,y=" + event.x + ", " + event.y); +} + +// register the call back so it fires before each data send +Agent.willSendVisualDataCallback.connect(checkController); + +// Map keyPress and mouse move events to our callbacks +Controller.keyPressEvent.connect(keyPressEvent); +var AKeyEvent = { + key: "A".charCodeAt(0), + isShifted: false, + isMeta: false +}; + +// prevent the A key from going through to the application +Controller.captureKeyEvents(AKeyEvent); + + +Controller.mouseMoveEvent.connect(mouseMoveEvent); + +// Map touch events to our callbacks +Controller.touchBeginEvent.connect(touchBeginEvent); +Controller.touchUpdateEvent.connect(touchUpdateEvent); +Controller.touchEndEvent.connect(touchEndEvent); + +// disable the standard application for touch events +Controller.captureTouchEvents(); + +function scriptEnding() { + // re-enabled the standard application for touch events + Controller.releaseTouchEvents(); +} + +Agent.scriptEnding.connect(scriptEnding);