private void OnSelectEnterInteractable(XRBaseInteractable _interactable) { if (!selectUse || XRInputManager.Instance.GetDeviceInteractObject(xrNode) != null) { return; } XRLogger.Instance.LogInfo($"Select Enter : " + _interactable.name); // Interactable object is UI if (_interactable.gameObject.layer == 5) { XRUIManipulateProvider.InvokeUIManipulateStart(_interactable.gameObject, baseInteractor); } selectedObject = baseInteractor.selectTarget.gameObject; interactLength = Vector3.Distance(transform.position, currentInteractPoint); interactorPoint = transform.position; isSelected = true; Ray ray = new Ray(transform.position, transform.forward * rayMaxLength); XRInputManager.Instance.SetDeviceInteractingState(xrNode, true); XRInputManager.Instance.SetDeviceInteractObject(xrNode, selectedObject); XRInputManager.Instance.SetDeviceInteractLength(xrNode, interactLength); XRInputManager.Instance.SetDeviceInteractOffet(xrNode, selectedObject.transform.position, ray.GetPoint(interactLength)); }
private void OnSelectExitInteractable(XRBaseInteractable _interactable) { if (!selectUse) { return; } XRLogger.Instance.LogInfo($"Select Exit : " + _interactable.name); // Interactable object is UI if (_interactable.gameObject.layer == 5) { XRUIManipulateProvider.InvokeUIManipulateEnd(_interactable.gameObject, baseInteractor); } selectedObject = null; interactLength = 0.0f; interactorPoint = Vector3.zero; isSelected = false; XRInputManager.Instance.SetDeviceInteractingState(xrNode, false); XRInputManager.Instance.SetDeviceInteractObject(xrNode, null); XRInputManager.Instance.SetDeviceInteractLength(xrNode, 0.0f); XRInputManager.Instance.SetDeviceInteractOffet(xrNode, Vector3.zero, Vector3.zero); }
private void OnHoverExitInteractable(XRBaseInteractable _interactable) { if (!hoverUse || isSelected) { return; } XRLogger.Instance.LogInfo($"Hover Exit : " + _interactable.name); // Interactable object is UI if (_interactable.gameObject.layer == 5) { XRUIManipulateProvider.InvokeUIHoverExit(_interactable.gameObject, baseInteractor); } rayInteractor.GetCurrentRaycastHit(out currentHit); ManageOutlineActivate(); OutlineDeactivate(_interactable); isHovering = false; }