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