using System; using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; public class ActiveBehaviourCollectorSorted<T> : ActiveBehaviourCollector<T> where T : class, IBehaviour { private Comparison<T>? _sortBy = null; public Comparison<T>? SortBy { get => _sortBy; set { _sortBy = value; if (value is not null) activeBehaviours.Sort(value); } } protected override void OnBehaviourAdd(IBehaviour behaviour) { if (SortBy is not null) activeBehaviours.Sort(SortBy); } public ActiveBehaviourCollectorSorted() { } public ActiveBehaviourCollectorSorted(IGameManager gameManager, Comparison<T> sortBy) : base(gameManager) => SortBy = sortBy; }