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