/// <summary>
        /// Register a new Interactable to be processed.
        /// </summary>
        /// <param name="interactable">The Interactable to be registered.</param>
        public virtual void RegisterInteractable(XRBaseInteractable interactable)
        {
            if (m_Interactables.Contains(interactable))
            {
                return;
            }

            m_Interactables.Add(interactable);

            foreach (var interactableCollider in interactable.colliders)
            {
                if (interactableCollider != null && !m_ColliderToInteractableMap.ContainsKey(interactableCollider))
                {
                    m_ColliderToInteractableMap.Add(interactableCollider, interactable);
                }
            }

#if AR_FOUNDATION_PRESENT
            if (interactable is ARBaseGestureInteractable)
            {
                m_GestureInteractablesNeedReconnect = true;
            }
#endif

            m_InteractableRegisteredEventArgs.manager      = this;
            m_InteractableRegisteredEventArgs.interactable = interactable;
            interactable.OnRegistered(m_InteractableRegisteredEventArgs);
            interactableRegistered?.Invoke(m_InteractableRegisteredEventArgs);
        }
Example #2
0
        /// <summary>
        /// Register a new Interactable to be processed.
        /// </summary>
        /// <param name="interactable">The Interactable to be registered.</param>
        public virtual void RegisterInteractable(XRBaseInteractable interactable)
        {
            if (m_Interactables.Contains(interactable))
            {
                return;
            }

            m_Interactables.Add(interactable);

            foreach (var interactableCollider in interactable.colliders)
            {
                if (interactableCollider != null && !m_ColliderToInteractableMap.ContainsKey(interactableCollider))
                {
                    m_ColliderToInteractableMap.Add(interactableCollider, interactable);
                }
            }

            m_InteractableRegisteredEventArgs.manager      = this;
            m_InteractableRegisteredEventArgs.interactable = interactable;
            interactable.OnRegistered(m_InteractableRegisteredEventArgs);
            interactableRegistered?.Invoke(m_InteractableRegisteredEventArgs);
        }