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);
                }
            }
Esempio n. 4
0
        public static void SetControllerSimulationMode(ControllerSimulationMode mode)
        {
            var iss = GetInputSimulationService();

            iss.ControllerSimulationMode = mode;
        }