namespace Zinnia.Tracking.Collision.Active.Operation { using UnityEngine; using Zinnia.Extension; /// /// Reverses the order of the given collision collection. /// public class OrderReverser : MonoBehaviour { /// /// Emitted when the collection is reversed. /// public ActiveCollisionsContainer.ActiveCollisionUnityEvent Reversed = new ActiveCollisionsContainer.ActiveCollisionUnityEvent(); /// /// The reserved list of active collisions. /// protected readonly ActiveCollisionsContainer.EventData reversedList = new ActiveCollisionsContainer.EventData(); /// /// Reverses the given collision collection. /// /// The original collision collection. public virtual void DoReverse(ActiveCollisionsContainer.EventData originalList) { Reverse(originalList); } /// /// Reverses the given collision collection. /// /// The original collision collection. /// The reversed collision collection. public virtual ActiveCollisionsContainer.EventData Reverse(ActiveCollisionsContainer.EventData originalList) { if (!this.CheckIsActiveAndEnabled()) { return originalList; } reversedList.Set(originalList); reversedList.ActiveCollisions.Reverse(); Reversed?.Invoke(reversedList); return reversedList; } } }