public virtual void SelectEnter(XRBaseInteractor interactor, XRBaseInteractable interactable) { // If Exclusive Selection, is this the only interactor trying to interact? if (interactor.requireSelectExclusive) { for (var i = 0; i < m_Interactors.Count; ++i) { if (m_Interactors[i] != interactor && m_Interactors[i].selectTarget == interactable) { return; } } } else { for (var i = 0; i < m_Interactors.Count; ++i) { if (m_Interactors[i].selectTarget == interactable) { SelectExit(m_Interactors[i], interactable); } } } interactor.OnSelectEntering(interactable); interactable.OnSelectEntering(interactor); interactor.OnSelectEntered(interactable); interactable.OnSelectEntered(interactor); }
/// <summary> /// Initiates selection of an Interactable by an Interactor, passing the given <paramref name="args"/>. /// </summary> /// <param name="interactor">The Interactor that is selecting.</param> /// <param name="interactable">The Interactable being selected.</param> /// <param name="args">Event data containing the Interactor and Interactable involved in the event.</param> protected virtual void SelectEnter(XRBaseInteractor interactor, XRBaseInteractable interactable, SelectEnterEventArgs args) { Debug.Assert(args.interactor == interactor, this); Debug.Assert(args.interactable == interactable, this); interactor.OnSelectEntering(args); interactable.OnSelectEntering(args); interactor.OnSelectEntered(args); interactable.OnSelectEntered(args); }