internal void UnregisterInteractable(BaseInteractable interactable)
        {
            if (m_Interactables.Contains(interactable))
            {
                m_Interactables.Remove(interactable);

                foreach (var collider in interactable.colliders)
                {
                    if (collider != null && m_ColliderToInteractableMap.ContainsKey(collider))
                    {
                        m_ColliderToInteractableMap.Remove(collider);
                    }
                }
            }
        }
        internal void RegisterInteractable(BaseInteractable interactable)
        {
            if (!m_Interactables.Contains(interactable))
            {
                m_Interactables.Add(interactable);

                foreach (var collider in interactable.colliders)
                {
                    if (collider != null && !m_ColliderToInteractableMap.ContainsKey(collider))
                    {
                        m_ColliderToInteractableMap.Add(collider, interactable);
                    }
                }
            }
        }
        int InteractableSortComparison(BaseInteractable x, BaseInteractable y)
        {
            float xDistance = m_InteractableDistanceSqrMap[x];
            float yDistance = m_InteractableDistanceSqrMap[y];

            if (xDistance > yDistance)
            {
                return(1);
            }
            if (xDistance < yDistance)
            {
                return(-1);
            }
            else
            {
                return(0);
            }
        }
Пример #4
0
        public override void ProcessInteractor(InteractionUpdateOrder.UpdatePhase updatePhase)
        {
            base.ProcessInteractor(updatePhase);

            if (updatePhase == InteractionUpdateOrder.UpdatePhase.Dynamic)
            {
                // check to see if we have a new hover object
                GetValidTargets(m_ValidTargets);
                var nearestObject = m_ValidTargets.FirstOrDefault();
                if (nearestObject != m_CurrentNearestObject)
                {
                    m_CurrentNearestObject         = nearestObject;
                    m_LastTimeHoveredObjectChanged = Time.time;
                }
                //else if (nearestObject && !m_PassedHoverTimeToSelect)
                //{
                //	float progressToHoverSelect = Mathf.Clamp01((Time.time - m_LastTimeHoveredObjectChanged) / m_HoverTimeToSelect);
                //	if (progressToHoverSelect >= 1.0f)
                //		m_PassedHoverTimeToSelect = true;
                //}
            }
        }
 void HoverExit(BaseInteractor interactor, BaseInteractable interactable)
 {
     //Debug.LogFormat("Hover Exit: Interactor = {0}; Interactable = {1}", interactor.name, interactable.name);
     interactor.OnHoverExit(interactable);
     interactable.OnHoverExit(interactor);
 }