/// <summary>
 /// Attempts to show the given <see cref="InteractorFacade"/>.
 /// </summary>
 /// <param name="interactorFacade">The interactor to show.</param>
 public virtual void Show(InteractorFacade interactorFacade)
 {
     if (Emit(ShowEmitter, interactorFacade))
     {
         Shown?.Invoke(interactorFacade);
     }
 }
 /// <summary>
 /// Attempts to hide the given <see cref="InteractorFacade"/>.
 /// </summary>
 /// <param name="interactorFacade">The interactor to hide.</param>
 public virtual void Hide(InteractorFacade interactorFacade)
 {
     if (Emit(HideEmitter, interactorFacade))
     {
         Hidden?.Invoke(interactorFacade);
     }
 }
        protected virtual bool Emit(InteractorFacadeEventProxyEmitter emitter, InteractorFacade interactorFacade)
        {
            if (emitter == null)
            {
                return(false);
            }

            emitter.Receive(interactorFacade);
            return(true);
        }
        /// <summary>
        /// Extracts the attach point associated with the grabbing functionality of the Interactor.
        /// </summary>
        /// <param name="interactor">The Interactor to extract from.</param>
        /// <returns>The attach point.</returns>
        public virtual GameObject ExtractAttachPoint(InteractorFacade interactor)
        {
            if (interactor == null || interactor.GrabConfiguration == null)
            {
                Result = null;
                return(null);
            }

            Result = interactor.GrabConfiguration.AttachPoint;
            return(base.Extract());
        }
        /// <summary>
        /// Extracts the <see cref="GameObject"/> the <see cref="InteractorFacade"/> is residing on.
        /// </summary>
        /// <param name="interactor">The Interactor to extract from.</param>
        /// <returns>The residing <see cref="GameObject"/>.</returns>
        public virtual GameObject Extract(InteractorFacade interactor)
        {
            if (interactor == null)
            {
                Result = null;
                return(null);
            }

            Result = interactor.gameObject;
            return(base.Extract());
        }
 /// <summary>
 /// Extracts the attach point associated with the grabbing functionality of the Interactor.
 /// </summary>
 /// <param name="interactor">The Interactor to extract from.</param>
 public virtual void DoExtractAttachPoint(InteractorFacade interactor)
 {
     ExtractAttachPoint(interactor);
 }