private void DrawHandsGUI() { ControllerSimulationMode newHandSimMode = (ControllerSimulationMode)EditorGUILayout.EnumPopup("Hand Simulation Mode", SimulationService.ControllerSimulationMode); if (newHandSimMode != SimulationService.ControllerSimulationMode) { SimulationService.ControllerSimulationMode = newHandSimMode; } using (new GUILayout.HorizontalScope()) { DrawHandGUI( "Left", SimulationService.IsAlwaysVisibleControllerLeft, v => SimulationService.IsAlwaysVisibleControllerLeft = v, SimulationService.ControllerPositionLeft, v => SimulationService.ControllerPositionLeft = v, SimulationService.ControllerRotationLeft, v => SimulationService.ControllerRotationLeft = v, SimulationService.ResetControllerLeft); DrawHandGUI( "Right", SimulationService.IsAlwaysVisibleControllerRight, v => SimulationService.IsAlwaysVisibleControllerRight = v, SimulationService.ControllerPositionRight, v => SimulationService.ControllerPositionRight = v, SimulationService.ControllerRotationRight, v => SimulationService.ControllerRotationRight = v, SimulationService.ResetControllerRight); } }
// Register input sources for controllers based on controller data protected void UpdateControllerDevice(ControllerSimulationMode simulationMode, Handedness handedness, object controllerData) { if (controllerData != null) { if (controllerData is SimulatedHandData handData && handData.IsTracked) { SimulatedHand hand = GetOrAddControllerDevice(handedness, simulationMode) as SimulatedHand; hand.UpdateState(handData); return; } } RemoveControllerDevice(handedness); }
protected BaseController GetOrAddControllerDevice(Handedness handedness, ControllerSimulationMode simulationMode) { var controller = GetControllerDevice(handedness); if (controller != null) { if (controller is SimulatedHand hand && hand.SimulationMode == simulationMode) { return(controller); } else { // Remove and recreate controller device if simulation mode doesn't match RemoveControllerDevice(handedness); } }
public static void SetControllerSimulationMode(ControllerSimulationMode mode) { var iss = GetInputSimulationService(); iss.ControllerSimulationMode = mode; }