Skip to content

Commit 69e3683

Browse files
author
Julia Schwarz
committed
Move out the giant cube test, I think poke pointers are not reliable with this test.
1 parent 596a532 commit 69e3683

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerTests.cs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -103,27 +103,17 @@ public IEnumerator TestLinePointers()
103103

104104
private IEnumerator TestPointerFieldOfViewHelper(IMixedRealityPointer myPointer, GameObject cube, TestHand testHand)
105105
{
106-
yield return testHand.Show(Vector3.zero);
107-
cube.transform.SetPositionAndRotation(Vector3.zero, Quaternion.identity);
108-
cube.transform.localScale = Vector3.one;
109-
110-
// Test case where pointer is inside of giant object
111-
yield return testHand.MoveTo(cube.transform.position);
112-
Assert.IsNotNull(myPointer);
113-
Assert.IsTrue(myPointer.IsInteractionEnabled, "Pointer should be enabled because it is inside giant cube.");
114-
106+
cube.transform.SetPositionAndRotation(Vector3.forward * 1f, Quaternion.identity);
115107
cube.transform.localScale = Vector3.one * 0.1f;
116-
// Move cube in front of camera so it is visible
117-
cube.transform.Translate(Vector3.forward * 1f);
118108
yield return testHand.MoveTo(cube.transform.position);
119109
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
120-
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled. Cube size {cube.transform.localScale} location {cube.transform.position}.");
110+
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled, cube in front camera. Cube size {cube.transform.localScale} location {cube.transform.position}.");
121111

122112
// Make cube no longer visible
123113
cube.transform.Translate(Vector3.up * 10);
124114
yield return testHand.MoveTo(cube.transform.position);
125115
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
126-
Assert.IsFalse(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should NOT be enabled, cube not in FOV. Cube size {cube.transform.localScale} location {cube.transform.position}.");
116+
Assert.IsFalse(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should NOT be enabled, cube behind camera. Cube size {cube.transform.localScale} location {cube.transform.position}.");
127117

128118
// For sphere and poke pointers, test that setting IgnoreCollidersNotInFOV works
129119
if (myPointer is SpherePointer spherePointer)
@@ -174,6 +164,25 @@ public IEnumerator TestPointerFieldOfView()
174164
GameObject.Destroy(cube);
175165
}
176166

167+
168+
/// <summary>
169+
/// Tests that sphere pointer grabs object when hand is inside a giant grabbable
170+
/// </summary>
171+
[UnityTest]
172+
public IEnumerator TestSpherePointerInsideGrabbable()
173+
{
174+
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
175+
cube.AddComponent<NearInteractionGrabbable>();
176+
var rightHand = new TestHand(Handedness.Right);
177+
yield return rightHand.Show(Vector3.zero);
178+
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
179+
180+
var spherePointer = PointerUtils.GetPointer<SpherePointer>(Handedness.Right);
181+
Assert.IsNotNull(spherePointer, "Right hand does not have a sphere pointer");
182+
Assert.IsTrue(spherePointer.IsInteractionEnabled, "Sphere pointer should be enabled because it is near grabbable cube and visible, even if inside a giant cube.");
183+
GameObject.Destroy(cube);
184+
}
185+
177186
/// <summary>
178187
/// Tests that right after being instantiated, the pointer's direction
179188
/// is in the same general direction as the forward direction of the camera

0 commit comments

Comments
 (0)