Example #1
0
        public static IEnumerator ShowMontionController(Handedness handedness, InputSimulationService inputSimulationService, SimulatedMotionControllerButtonState buttonState, Vector3 motionControllerLocation)
        {
            yield return(null);

            Debug.Assert((ControllerSimulationMode.MotionController == inputSimulationService.ControllerSimulationMode), "The current ControllerSimulationMode must be MotionController!");
            SimulatedMotionControllerData motionControllerData = handedness == Handedness.Right ? inputSimulationService.MotionControllerDataRight : inputSimulationService.MotionControllerDataLeft;

            motionControllerData.Update(true, buttonState, UpdateMotionControllerPose(handedness, motionControllerLocation, Quaternion.identity));

            // Wait one frame for the hand to actually appear
            yield return(null);
        }
Example #2
0
        public static IEnumerator HideController(Handedness handedness, InputSimulationService inputSimulationService)
        {
            yield return(null);

            SimulatedMotionControllerData        motionControllerData = handedness == Handedness.Right ? inputSimulationService.MotionControllerDataRight : inputSimulationService.MotionControllerDataLeft;
            SimulatedMotionControllerButtonState defaultButtonState   = new SimulatedMotionControllerButtonState();

            motionControllerData.Update(false, defaultButtonState, UpdateMotionControllerPose(handedness, Vector3.zero, Quaternion.identity));

            // Wait one frame for the motion controller to actually disappear
            yield return(null);
        }
Example #3
0
        public static IEnumerator SetMotionControllerRotation(Quaternion fromRotation, Quaternion toRotation, Vector3 motionControllerPos, SimulatedMotionControllerButtonState buttonState,
                                                              Handedness handedness, int numSteps, InputSimulationService inputSimulationService)
        {
            Debug.Assert(handedness == Handedness.Right || handedness == Handedness.Left, "handedness must be either right or left");

            for (int i = 1; i <= numSteps; i++)
            {
                float      t = i / (float)numSteps;
                Quaternion motionControllerRotation    = Quaternion.Lerp(fromRotation, toRotation, t);
                var        motionControllerDataUpdater = UpdateMotionControllerPose(
                    handedness,
                    motionControllerPos,
                    motionControllerRotation);
                SimulatedMotionControllerData motionControllerData = handedness == Handedness.Right ? inputSimulationService.MotionControllerDataRight : inputSimulationService.MotionControllerDataLeft;
                motionControllerData.Update(true, buttonState, motionControllerDataUpdater);
                yield return(null);
            }
        }
Example #4
0
        /// <summary>
        /// Moves the motion controller from startPos to endPos.
        /// </summary>
        /// <remarks>
        /// <para>Note that numSteps defaults to a value of -1, which is a sentinel value to indicate that the
        /// default number of steps should be used (i.e. ControllerMoveSteps). ControllerMoveSteps is not a compile
        /// time constant, which is a requirement for default parameter values.</para>
        /// </remarks>
        public static IEnumerator MoveMotionController(
            Vector3 startPos, Vector3 endPos, SimulatedMotionControllerButtonState buttonState,
            Handedness handedness, InputSimulationService inputSimulationService,
            int numSteps = ControllerMoveStepsSentinelValue)
        {
            Debug.Assert(handedness == Handedness.Right || handedness == Handedness.Left, "handedness must be either right or left");
            numSteps = CalculateNumSteps(numSteps);

            for (int i = 1; i <= numSteps; i++)
            {
                float   t = i / (float)numSteps;
                Vector3 motionControllerPos         = Vector3.Lerp(startPos, endPos, t);
                var     motionControllerDataUpdater = UpdateMotionControllerPose(
                    handedness,
                    motionControllerPos,
                    Quaternion.identity);
                SimulatedMotionControllerData motionControllerData = handedness == Handedness.Right ? inputSimulationService.MotionControllerDataRight : inputSimulationService.MotionControllerDataLeft;
                motionControllerData.Update(true, buttonState, motionControllerDataUpdater);
                yield return(null);
            }
        }