/// <summary> /// Resumes the Interactable ungrabbed by the Interactor. /// </summary> /// <param name="interactable">The Interactable to resume.</param> protected virtual void ResumeInteractorUngrabbedCollision(InteractableFacade interactable) { if (!Facade.IgnoredGameObjects.Contains(interactable.gameObject) && ( interactable.GrabbingInteractors.Count == 0 || !Facade.IgnoredGameObjects.NonSubscribableElements.Intersect(GetGameObjectListFromInteractorFacadeList(interactable.GrabbingInteractors)).Any()) ) { CollisionsToIgnore.RunWhenActiveAndEnabled(() => CollisionsToIgnore.Targets.Remove(interactable.gameObject)); } }
/// <summary> /// Resumes the interactable ungrabbed by the interactor. /// </summary> /// <param name="interactable">The interactable to resume.</param> protected virtual void ResumeInteractorUngrabbedCollision(InteractableFacade interactable) { CollisionsToIgnore.RunWhenActiveAndEnabled(() => CollisionsToIgnore.Targets.Remove(interactable.gameObject)); }
/// <summary> /// Ignores the interactable grabbed by the interactor. /// </summary> /// <param name="interactable">The interactable to ignore.</param> protected virtual void IgnoreInteractorGrabbedCollision(InteractableFacade interactable) { CollisionsToIgnore.RunWhenActiveAndEnabled(() => CollisionsToIgnore.Targets.AddUnique(interactable.gameObject)); }
/// <summary> /// Resumes all of the colliders on the interactor collection. /// </summary> public virtual void ResumeInteractorsCollisions(InteractorFacade interactor) { CollisionsToIgnore.RunWhenActiveAndEnabled(() => CollisionsToIgnore.Targets.Remove(interactor.gameObject)); interactor.Grabbed.RemoveListener(IgnoreInteractorGrabbedCollision); interactor.Ungrabbed.RemoveListener(ResumeInteractorUngrabbedCollision); }
public virtual void ResumeInteractorsCollisions(InteractorFacade interactor) { CollisionsToIgnore.RunWhenActiveAndEnabled(() => CollisionsToIgnore.Targets.Remove(interactor.gameObject)); }