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;
        }