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);
}
}