using System; using System.Collections.Generic; using StansAssets.Foundation.Patterns; namespace StansAssets.SceneManagement { public class StackOperationEvent : StackEvent where TEnum : Enum { static readonly DefaultPool> s_EventsPool = new DefaultPool>(); public StackOperation Operation { get; private set; } public IReadOnlyList OldStackValue { get; protected set; } public IReadOnlyList NewStackValue { get; protected set; } public static StackOperationEvent GetPooled(StackOperation operation, TEnum state, IReadOnlyList oldStackValue, IReadOnlyList newStackValue) { var e = s_EventsPool.Get(); e.Operation = operation; e.State = state; e.OldStackValue = oldStackValue; e.NewStackValue = newStackValue; return e; } public static void Release(StackOperationEvent stackChangeEvent) { s_EventsPool.Release(stackChangeEvent); } } }