// Start is called before the first frame update
    void Start()
    {
        handModel      = GetComponentInChildren <SkinnedMeshRenderer>();
        handInteractor = GetComponentInParent <ActionBasedControllerManager>().GetComponentInChildren <XRBaseControllerInteractor>();

        handInteractor.selectEntered.AddListener(OnGrab);
        handInteractor.selectExited.AddListener(OnLetGo);
    }
Пример #2
0
 void OnTriggerExit(Collider other)
 {
     if (other.CompareTag("XRInteractor"))
     {
         interactor        = null;
         isInProximityArea = false;
         OnProximityAreaExitFunction();
         onProximityAreaExit?.Invoke();
     }
 }
Пример #3
0
 void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag("XRInteractor"))
     {
         interactor        = other.GetComponent <XRBaseControllerInteractor>();
         isInProximityArea = true;
         OnProximityAreaEnterFunction();
         onProximityAreaEnter?.Invoke();
     }
 }
        // Start is called before the first frame update
        void Start()
        {
            if (anim == null)
            {
                anim = GetComponent <Animator>();
            }

            xRBaseController = GetComponentInParent <XRBaseControllerInteractor>();
            if (xRBaseController != null)
            {
                xRBaseController.onHoverEnter.AddListener((XRBaseInteractor) => { isOnInteractableEvent = true; OnSelectedEnter(XRBaseInteractor); });
                xRBaseController.onHoverExit.AddListener((XRBaseInteractor) => { if (!isOnSelectedEvent)
                                                                                 {
                                                                                     isOnInteractableEvent = false; OnHoverExit();
                                                                                 }
                                                         });
                xRBaseController.onSelectEnter.AddListener((XRBaseInteractor) => { isOnInteractableEvent = true; isOnSelectedEvent = true; OnSelectedEnter(XRBaseInteractor); });
                xRBaseController.onSelectExit.AddListener((XRBaseInteractor) => { isOnSelectedEvent = false; OnHoverExit(); });
            }

            XRController rController = GetComponentInParent <XRController>();

            if (rController != null)
            {
                isLeftHand = rController.controllerNode == UnityEngine.XR.XRNode.LeftHand;
            }

            GripTouch.OnButtonDown += GripButtonDown;
            GripTouch.OnButtonUp   += GripButtonUp;

            triggerHandler.OnValueChange += OnTrigger;

            ThumbTouch.OnButtonDown += ThumbButtonDown;
            ThumbTouch.OnButtonUp   += ThumbButtonUp;

            TriggerTouch.OnButtonDown += TriggerTouchButtonDown;
            TriggerTouch.OnButtonUp   += TriggerTouchButtonUp;

            interactable = GetComponentInParent <IInteractableCustom>();
        }
Пример #5
0
 private void Awake()
 {
     interactor          = GetComponent <XRBaseControllerInteractor>();
     interactionManager  = interactor.interactionManager;
     originalTriggerType = interactor.selectActionTrigger;
 }