namespace Tilia.Interactions.Interactables.Interactables.Grab.Provider { using System.Collections.Generic; using Tilia.Interactions.Interactables.Interactors; using UnityEngine; using Zinnia.Data.Attribute; using Zinnia.Data.Collection.Stack; /// /// Processes a received grab event into an Observable Stack to handle multiple output options for each grab type. /// public class GrabInteractableStackInteractorProvider : GrabInteractableInteractorProvider { #region Stack Settings [Header("Stack Settings")] [Tooltip("The stack to get the current interactors from.")] [SerializeField] [Restricted] private GameObjectObservableStack eventStack; /// /// The stack to get the current interactors from. /// public GameObjectObservableStack EventStack { get { return eventStack; } set { eventStack = value; } } [Tooltip("The container that holds the logic for attempting to swap the stacks on force pop.")] [SerializeField] [Restricted] private GameObject attemptSwapLogicContainer; /// /// The container that holds the logic for attempting to swap the stacks on force pop. /// public GameObject AttemptSwapLogicContainer { get { return attemptSwapLogicContainer; } set { attemptSwapLogicContainer = value; } } #endregion /// public override IReadOnlyList GrabbingInteractors => GetGrabbingInteractors(EventStack.Stack); } }