/// <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);
     }
 }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
 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]);
             }
         }
     }
 }
Exemple #4
0
        /// <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);
                }
            }
        }