Allow user to click left thumbstick to switch 'MONITOR SHOWS'

This commit is contained in:
Zach Fox 2017-06-15 14:50:34 -07:00
parent 416ebaa2e8
commit 8cf9c8708d
2 changed files with 53 additions and 4 deletions

View file

@ -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));
}

View file

@ -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();
}
//