public IEnumerator TestDisableOnClick() { TestButtonUtilities.InstantiateDefaultButton( TestButtonUtilities.DefaultButtonType.DefaultPushButton, out Interactable interactable, out Transform innerCylinderTransform); Assert.True(interactable.IsEnabled); // OnClick, set Interactable IsEnabled false or aka disabled interactable.OnClick.AddListener(() => { interactable.IsEnabled = false; }); // Get start position of the inner cylinder before button is pressed Vector3 innerCylinderStartPosition = innerCylinderTransform.localPosition; yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, innerCylinderStartPosition, innerCylinderTransform)); Assert.False(interactable.IsEnabled, "Interactable should be disabled"); // Re-enable Interactable interactable.IsEnabled = true; yield return(PlayModeTestUtilities.WaitForInputSystemUpdate()); // Make sure the button depth is back at the starting position when re-enable the gameObject and states have reset Assert.True(innerCylinderTransform.localPosition == innerCylinderStartPosition); Assert.False(interactable.HasFocus, "Interactable has focus"); Assert.True(interactable.IsVisited, "Interactable was not visited"); GameObject.Destroy(interactable.gameObject); }
public IEnumerator TestDisabledPointerCache() { TestButtonUtilities.InstantiateDefaultButton(TestButtonUtilities.DefaultButtonType.DefaultPushButton, out Interactable interactable, out Transform translateTargetObject); Vector3 targetStartPosition = translateTargetObject.localPosition; // Subscribe to interactable's on click so we know the click went through bool wasClicked = false; interactable.OnClick.AddListener(() => { wasClicked = true; }); PlayModeTestUtilities.GetInputSimulationService().EnablePointerCache = false; var rightHand = new TestHand(Handedness.Right); yield return(rightHand.Show(Vector3.right)); var rightPokePointer = PlayModeTestUtilities.GetPointer <PokePointer>(Handedness.Right); Assert.IsNotNull(rightPokePointer); Assert.IsFalse(rightPokePointer.DestroyOnSourceLost); yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, targetStartPosition, translateTargetObject)); Assert.IsTrue(wasClicked); Assert.IsTrue(rightPokePointer == null); Assert.IsNull(PlayModeTestUtilities.GetPointer <PokePointer>(Handedness.Right)); wasClicked = false; yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, targetStartPosition, translateTargetObject)); Assert.IsTrue(wasClicked); }
public IEnumerator TestPointerCaching() { TestButtonUtilities.InstantiateDefaultButton(TestButtonUtilities.DefaultButtonType.DefaultPushButton, out Interactable interactable, out Transform translateTargetObject); Vector3 targetStartPosition = translateTargetObject.localPosition; // Subscribe to interactable's on click so we know the click went through bool wasClicked = false; interactable.OnClick.AddListener(() => { wasClicked = true; }); var rightHand = new TestHand(Handedness.Right); yield return(rightHand.Show(Vector3.right)); var rightPokePointer = PlayModeTestUtilities.GetPointer <PokePointer>(Handedness.Right); Assert.IsNotNull(rightPokePointer); Assert.IsFalse(rightPokePointer.DestroyOnSourceLost); yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, targetStartPosition, translateTargetObject)); Assert.IsTrue(wasClicked); Assert.IsNotNull(rightPokePointer); Assert.IsNull(PlayModeTestUtilities.GetPointer <PokePointer>(Handedness.Right)); wasClicked = false; yield return(rightHand.Show(Vector3.right)); // Confirm that we are re-using the same pointer gameobject that was stored in the cache Assert.AreEqual(rightPokePointer, PlayModeTestUtilities.GetPointer <PokePointer>(Handedness.Right)); yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, targetStartPosition, translateTargetObject)); Assert.IsTrue(wasClicked); Assert.IsNotNull(rightPokePointer); Assert.IsNull(PlayModeTestUtilities.GetPointer <PokePointer>(Handedness.Right)); }
public IEnumerator TestHandInputOnRuntimeAssembled() { AssembleInteractableButton( out Interactable interactable, out Transform translateTargetObject); interactable.transform.position = new Vector3(0.025f, 0.05f, 0.65f); interactable.transform.eulerAngles = new Vector3(-90f, 0f, 0f); TestUtilities.PlaceRelativeToPlayspace(interactable.transform); // Subscribe to interactable's on click so we know the click went through bool wasClicked = false; interactable.OnClick.AddListener(() => { wasClicked = true; }); Vector3 targetStartPosition = translateTargetObject.transform.localPosition; yield return(null); // Add a touchable and configure for touch events NearInteractionTouchable touchable = interactable.gameObject.AddComponent <NearInteractionTouchable>(); touchable.EventsToReceive = TouchableEventType.Touch; touchable.SetBounds(Vector2.one); touchable.SetLocalForward(Vector3.up); touchable.SetLocalUp(Vector3.forward); touchable.SetLocalCenter(Vector3.up * 2.75f); // Add a touch handler and link touch started / touch completed events TouchHandler touchHandler = interactable.gameObject.AddComponent <TouchHandler>(); touchHandler.OnTouchStarted.AddListener((HandTrackingInputEventData e) => interactable.SetInputDown()); touchHandler.OnTouchCompleted.AddListener((HandTrackingInputEventData e) => interactable.SetInputUp()); yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, targetStartPosition, translateTargetObject)); Assert.True(wasClicked, "Interactable was not clicked."); GameObject.Destroy(interactable.gameObject); }
public IEnumerator TestDisabledOnStart() { // Instantiate model_pushbutton prefab but with enabled on start false TestButtonUtilities.InstantiatePressableButtonPrefab( new Vector3(0.025f, 0.05f, 0.5f), TestButtonUtilities.DefaultRotation, DisabledOnStartPrefabAssetPath, "Cylinder", out Interactable interactable, out Transform pressButtonCylinder); // Subscribe to interactable's on click so we know the click went through bool wasClicked = false; interactable.OnClick.AddListener(() => { wasClicked = true; }); Vector3 targetStartPosition = pressButtonCylinder.localPosition; // // Test starting as disabled // yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, targetStartPosition, pressButtonCylinder, false)); Assert.False(wasClicked, "Interactable was clicked."); // // Test when enabled // interactable.IsEnabled = true; yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, targetStartPosition, pressButtonCylinder, true)); Assert.True(wasClicked, "Interactable was not clicked."); // Cleanup GameObject.Destroy(interactable.gameObject); }
public IEnumerator TestHandInputOnPrefab() { TestButtonUtilities.InstantiatePressableButtonPrefab( new Vector3(0.025f, 0.05f, 0.5f), TestButtonUtilities.DefaultRotation, TestButtonUtilities.DefaultInteractablePrefabAssetPath, "Cylinder", out Interactable interactable, out Transform translateTargetObject); // Subscribe to interactable's on click so we know the click went through bool wasClicked = false; interactable.OnClick.AddListener(() => { wasClicked = true; }); Vector3 targetStartPosition = translateTargetObject.localPosition; yield return(TestButtonUtilities.TestClickPushButton(interactable.transform, targetStartPosition, translateTargetObject)); Assert.True(wasClicked, "Interactable was not clicked."); //Cleanup GameObject.Destroy(interactable.gameObject); }