예제 #1
0
        public IEnumerator TestUseSourcePoseDataAsFallback()
        {
            TestHand rightHand = new TestHand(Handedness.Right);

            yield return(rightHand.Show(Vector3.zero));

            yield return(PlayModeTestUtilities.WaitForInputSystemUpdate());

            PokePointer pokePointer = PointerUtils.GetPointer <PokePointer>(Handedness.Right);

            Assert.IsNotNull(pokePointer);
            pokePointer.UseSourcePoseAsFallback = true;

            SpherePointer grabPointer = PointerUtils.GetPointer <SpherePointer>(Handedness.Right);

            Assert.IsNotNull(grabPointer);
            grabPointer.UseSourcePoseAsFallback = true;

            // Setting the pointer's pose action to a new input action is functionally equivalent to ensuring that an event is never raised of the pointer's desired pose action
            // This makes it so it will have to use the source pose data as a fallback
            pokePointer.PoseAction = new MixedRealityInputAction();
            grabPointer.PoseAction = new MixedRealityInputAction();
            yield return(PlayModeTestUtilities.WaitForInputSystemUpdate());

            yield return(rightHand.Hide());

            yield return(rightHand.Show(Vector3.zero));

            yield return(PlayModeTestUtilities.WaitForInputSystemUpdate());

            // The source pose is centered on the palm
            MixedRealityPose palmPose;

            HandJointUtils.TryGetJointPose(TrackedHandJoint.Palm, Handedness.Right, out palmPose);

            // This offset value is derived from the PokePointer's sourcePoseOffset property
            float pokePointerOffset = 0.075f;

            TestUtilities.AssertAboutEqual(pokePointer.Position, grabPointer.Position + pokePointer.transform.forward * pokePointerOffset, "pointer was not in the expected position");
            TestUtilities.AssertAboutEqual(grabPointer.Position, palmPose.Position, "pointer was not in the expected position");
        }
예제 #2
0
        public IEnumerator TestUseSourcePoseData()
        {
            TestHand rightHand = new TestHand(Handedness.Right);

            yield return(rightHand.Show(Vector3.zero));

            yield return(PlayModeTestUtilities.WaitForInputSystemUpdate());

            PokePointer pokePointer = PointerUtils.GetPointer <PokePointer>(Handedness.Right);

            Assert.IsNotNull(pokePointer);
            SpherePointer grabPointer = PointerUtils.GetPointer <SpherePointer>(Handedness.Right);

            Assert.IsNotNull(grabPointer);

            pokePointer.UseSourcePoseData = true;
            grabPointer.UseSourcePoseData = true;
            yield return(PlayModeTestUtilities.WaitForInputSystemUpdate());

            yield return(rightHand.Hide());

            yield return(rightHand.Show(Vector3.zero));

            yield return(PlayModeTestUtilities.WaitForInputSystemUpdate());


            // The source pose is centered on the palm
            MixedRealityPose palmPose;

            HandJointUtils.TryGetJointPose(TrackedHandJoint.Palm, Handedness.Right, out palmPose);
            // This offset value is derived from the PokePointer's sourcePoseOffset property
            float pokePointerOffset = 0.075f;

            TestUtilities.AssertAboutEqual(pokePointer.Position, grabPointer.Position + pokePointer.transform.forward * pokePointerOffset, "pointer was not in the expected position");
            TestUtilities.AssertAboutEqual(grabPointer.Position, palmPose.Position, "pointer was not in the expected position");
        }