From 5f34d04596cd86044818c8fdeff561ed6ea80301 Mon Sep 17 00:00:00 2001 From: rampa3 <68955305+rampa3@users.noreply.github.com> Date: Tue, 6 Jun 2023 22:27:44 +0200 Subject: [PATCH] Added initial mouse look script Added initial WIP implementation of mouse look script. --- .../system/controllers/controllerScripts.js | 1 + scripts/system/controllers/mouseLook.js | 85 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 scripts/system/controllers/mouseLook.js diff --git a/scripts/system/controllers/controllerScripts.js b/scripts/system/controllers/controllerScripts.js index de185e3fe0..088b0fae67 100644 --- a/scripts/system/controllers/controllerScripts.js +++ b/scripts/system/controllers/controllerScripts.js @@ -19,6 +19,7 @@ var CONTOLLER_SCRIPTS = [ "grab.js", "toggleAdvancedMovementForHandControllers.js", "handTouch.js", + "mouseLook.js", "controllerModules/nearParentGrabOverlay.js", "controllerModules/stylusInput.js", "controllerModules/equipEntity.js", diff --git a/scripts/system/controllers/mouseLook.js b/scripts/system/controllers/mouseLook.js new file mode 100644 index 0000000000..33901eb9e0 --- /dev/null +++ b/scripts/system/controllers/mouseLook.js @@ -0,0 +1,85 @@ +/* +mouseLook.js – mouse look switching script +by rampa3 (https://github.com/rampa3) and vegaslon (https://github.com/vegaslon) +*/ +(function() { // BEGIN LOCAL_SCOPE + + var oldMode; + + var mouseLookEnabled = false; + + mouseLookOn(); + + Controller.keyPressEvent.connect(function(event) { + if (event.text === 'm') { + if (mouseLookEnabled) { + if (!Camera.getCaptureMouse()){ + Window.displayAnnouncement("Mouse look: ON"); + mouseLookOn(); + } else { + Window.displayAnnouncement("Mouse look: TEMPORARILY OFF"); + mouseLookOff(); + } + } + } + if (event.text === 'M') { + if (!mouseLookEnabled){ + Window.displayAnnouncement("Mouse look: ENABLED") + mouseLookEnabled = true; + mouseLookOn(); + } else { + Window.displayAnnouncement("Mouse look: DISABLED") + mouseLookEnabled = false; + mouseLookOff(); + } + } + }); + + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + tablet.tabletShownChanged.connect(function () { + if (!tablet.toolbarMode) { + if (tablet.tabletShown) { + Window.displayAnnouncement("Tablet is up – mouse look temporarily off."); + mouseLookOff(); + + } else if (!tablet.tabletShown) { + Window.displayAnnouncement("Tablet hidden – mouse look on."); + mouseLookOn(); + } + } + }); + + MyAvatar.wentAway.connect(function () { + Window.displayAnnouncement("Away state ON – mouse look temporarily off.") + mouseLookOff() + }); + + MyAvatar.wentActive.connect(function () { + Window.displayAnnouncement("Away state OFF – mouse look on."); + mouseLookOn(); + }); + + function mouseLookOn() { + oldMode = Camera.mode; + Camera.mode = "first person"; + Camera.captureMouse = true; + } + + function mouseLookOff() { + Camera.captureMouse = false; + Camera.mode = oldMode; + } + + function onCameraModeUpdated(newMode) { + if (Camera.getCaptureMouse()){ + Camera.captureMouse = false; + } + } + + Camera.modeUpdated.connect(onCameraModeUpdated); + + Script.scriptEnding.connect(function() { + Camera.captureMouse = false; + }); + +}()); // END LOCAL_SCOPE \ No newline at end of file