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