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