/// <summary> /// Automatically called each frame during Update to clear the selection of the Interactor if necessary due to current conditions. /// </summary> /// <param name="interactor">The Interactor to potentially exit its selection state.</param> public virtual void ClearInteractorSelection(XRBaseInteractor interactor) { if (interactor.selectTarget != null && (!interactor.isSelectActive || !interactor.CanSelect(interactor.selectTarget) || !interactor.selectTarget.IsSelectableBy(interactor))) { SelectExit(interactor, interactor.selectTarget); } }
void ClearInteractorSelection(XRBaseInteractor interactor) { // TODO: Make sure SelectExit is called if the selectTarget of the interactor is destroyed (and write a test around this). if (interactor.selectTarget && (!interactor.isSelectActive || !interactor.CanSelect(interactor.selectTarget) || !interactor.selectTarget.IsSelectableBy(interactor))) { SelectExit(interactor, interactor.selectTarget); } }
void InteractorSelectValidTargets(XRBaseInteractor interactor, List <XRBaseInteractable> validTargets) { if (interactor.isSelectActive) { for (var i = 0; i < validTargets.Count && interactor.isSelectActive; ++i) { if (interactor.CanSelect(validTargets[i]) && validTargets[i].IsSelectableBy(interactor) && interactor.selectTarget != validTargets[i]) { SelectEnter(interactor, validTargets[i]); } } } }
/// <summary> /// Automatically called each frame during Update to enter the selection state of the Interactor if necessary due to current conditions. /// </summary> /// <param name="interactor">The Interactor to potentially enter its selection state.</param> /// <param name="validTargets">The list of interactables that this Interactor could possibly interact with this frame.</param> protected virtual void InteractorSelectValidTargets(XRBaseInteractor interactor, List <XRBaseInteractable> validTargets) { if (!interactor.isSelectActive) { return; } for (var i = 0; i < validTargets.Count && interactor.isSelectActive; ++i) { var interactable = validTargets[i]; if (interactor.CanSelect(interactable) && interactable.IsSelectableBy(interactor) && interactor.selectTarget != interactable) { SelectEnter(interactor, interactable); } } }