public IEnumerator TestGrabEvents() { var grabReceiver = interactable.AddReceiver <InteractableOnGrabReceiver>(); interactable.gameObject.AddComponent <NearInteractionGrabbable>(); bool didGrab = false; grabReceiver.OnGrab.AddListener(() => didGrab = true); bool didRelease = false; grabReceiver.OnRelease.AddListener(() => didRelease = true); var testHand = new TestHand(Handedness.Right); yield return(testHand.Show(interactable.transform.position)); yield return(testHand.SetGesture(ArticulatedHandPose.GestureId.Pinch)); yield return(testHand.SetGesture(ArticulatedHandPose.GestureId.Open)); yield return(testHand.Hide()); Assert.True(didGrab, "Did not receive grab event"); Assert.True(didRelease, "Did not receive release event"); GameObject.Destroy(cube); yield return(null); }
private void Start() { // Get variables TTP = GetComponent <TapToPlace>(); interactable = GetComponent <Interactable>(); focusSelect = GetComponent <FocusSelect>(); // When placing ends disable TapToPlace to avoid user being able to move object by clicking it TTP.OnPlacingStopped.AddListener(() => TTP.enabled = false); // Link focusSelect interaction to interactable.onFocuseReceiver // Enable/Disable loading bar on focus InteractableOnFocusReceiver focusRec = interactable.AddReceiver <InteractableOnFocusReceiver>(); focusRec.OnFocusOn.AddListener(focusSelect.StartFocusInteraction); focusRec.OnFocusOn.AddListener(() => { if (!detailsAnim.gameObject.activeSelf) { circularLoading.SetActive(true); } }); focusRec.OnFocusOff.AddListener(focusSelect.StopFocusInteraction); focusRec.OnFocusOff.AddListener(() => circularLoading.SetActive(false)); // Open details and disable loading bar when focus interaction is complete focusSelect.OnHoldFocus.AddListener(OpenDetails); focusSelect.OnHoldFocus.AddListener(() => circularLoading.SetActive(false)); }