From 8cf9c8708df108fcda953af9fb8dd771a08d139c Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 15 Jun 2017 14:50:34 -0700 Subject: [PATCH] Allow user to click left thumbstick to switch 'MONITOR SHOWS' --- .../resources/qml/hifi/SpectatorCamera.qml | 3 ++ scripts/system/spectatorCamera.js | 54 +++++++++++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/hifi/SpectatorCamera.qml b/interface/resources/qml/hifi/SpectatorCamera.qml index 544fc72927..fcbac5e60d 100644 --- a/interface/resources/qml/hifi/SpectatorCamera.qml +++ b/interface/resources/qml/hifi/SpectatorCamera.qml @@ -288,6 +288,9 @@ Rectangle { case 'updateMonitorShowsSwitch': monitorShowsSwitch.checked = message.params; break; + case 'updateControllerMappingCheckbox': + switchViewFromControllerCheckBox.checked = message.params; + break; default: console.log('Unrecognized message from spectatorCamera.js:', JSON.stringify(message)); } diff --git a/scripts/system/spectatorCamera.js b/scripts/system/spectatorCamera.js index 6095a960cd..26fca11305 100644 --- a/scripts/system/spectatorCamera.js +++ b/scripts/system/spectatorCamera.js @@ -18,9 +18,7 @@ // FUNCTION VAR DECLARATIONS // var sendToQml, addOrRemoveButton, onTabletScreenChanged, fromQml, - onTabletButtonClicked, wireEventBridge, startup, shutdown; - - + onTabletButtonClicked, wireEventBridge, startup, shutdown, registerButtonMappings; // // Function Name: inFrontOf() @@ -247,6 +245,7 @@ HMD.displayModeChanged.connect(onHMDChanged); viewFinderOverlay = false; camera = false; + registerButtonMappings(); } // @@ -301,6 +300,52 @@ } } + const SWITCH_VIEW_FROM_CONTROLLER_DEFAULT = false; + var switchViewFromController = !!Settings.getValue('spectatorCamera/switchViewFromController', SWITCH_VIEW_FROM_CONTROLLER_DEFAULT); + function setControllerMappingStatus(status) { + if (status === true) { + controllerMapping.enable(); + } else { + controllerMapping.disable(); + } + } + function setSwitchViewFromController(setting) { + if (setting === switchViewFromController) { + return; + } + switchViewFromController = setting; + setControllerMappingStatus(switchViewFromController); + Settings.setValue('spectatorCamera/switchViewFromController', setting); + } + + // + // Function Name: registerButtonMappings() + // + // Relevant Variables: + // controllerMappingName: The name of the controller mapping + // controllerMapping: The controller mapping itself + // + // Arguments: + // None + // + // Description: + // Updates controller button mappings for Spectator Camera. + // + var controllerMappingName; + var controllerMapping; + function registerButtonMappings() { + controllerMappingName = 'Hifi-SpectatorCamera-Mapping-' + Math.random(); + controllerMapping = Controller.newMapping(controllerMappingName); + controllerMapping.from(Controller.Standard.LS).to(function (value) { + if (value === 1.0) { + setMonitorShowsCameraViewAndSendToQml(!monitorShowsCameraView); + } + return; + }); + setControllerMappingStatus(switchViewFromController); + sendToQml({ method: 'updateControllerMappingCheckbox', params: switchViewFromController }); + } + // // Function Name: onTabletButtonClicked() // @@ -396,7 +441,7 @@ setMonitorShowsCameraView(message.params); break; case 'changeSwitchViewFromControllerPreference': - print('FIXME: Preference is now: ' + message.params); + setSwitchViewFromController(message.params); break; default: print('Unrecognized message from SpectatorCamera.qml:', JSON.stringify(message)); @@ -442,6 +487,7 @@ tablet.screenChanged.disconnect(onTabletScreenChanged); HMD.displayModeChanged.disconnect(onHMDChanged); Controller.keyPressEvent.disconnect(keyPressEvent); + controllerMapping.disable(); } //