diff --git a/Engine.Core/ActiveBehaviourCollectorSorted.cs b/Engine.Core/ActiveBehaviourCollectorSorted.cs index e6807c2..4918c2a 100644 --- a/Engine.Core/ActiveBehaviourCollectorSorted.cs +++ b/Engine.Core/ActiveBehaviourCollectorSorted.cs @@ -6,7 +6,18 @@ namespace Syntriax.Engine.Core; public class ActiveBehaviourCollectorSorted : ActiveBehaviourCollector where T : class, IBehaviour { - public Comparison? SortBy { get; set; } = null; + private Comparison? _sortBy = null; + public Comparison? SortBy + { + get => _sortBy; + set + { + _sortBy = value; + + if (value is not null) + activeBehaviours.Sort(value); + } + } protected override void OnBehaviourAdd(IBehaviour behaviour) { @@ -15,5 +26,5 @@ public class ActiveBehaviourCollectorSorted : ActiveBehaviourCollector whe } public ActiveBehaviourCollectorSorted() { } - public ActiveBehaviourCollectorSorted(IGameManager gameManager) : base(gameManager) { } + public ActiveBehaviourCollectorSorted(IGameManager gameManager, Comparison sortBy) : base(gameManager) => SortBy = sortBy; } diff --git a/Engine.Core/BehaviourCollectorSorted.cs b/Engine.Core/BehaviourCollectorSorted.cs index 2c384eb..e96ab95 100644 --- a/Engine.Core/BehaviourCollectorSorted.cs +++ b/Engine.Core/BehaviourCollectorSorted.cs @@ -6,7 +6,18 @@ namespace Syntriax.Engine.Core; public class BehaviourCollectorSorted : BehaviourCollector where T : class { - public Comparison? SortBy { get; set; } = null; + private Comparison? _sortBy = null; + public Comparison? SortBy + { + get => _sortBy; + set + { + _sortBy = value; + + if (value is not null) + behaviours.Sort(value); + } + } protected override void OnBehaviourAdd(IBehaviour behaviour) { @@ -15,5 +26,5 @@ public class BehaviourCollectorSorted : BehaviourCollector where T : class } public BehaviourCollectorSorted() { } - public BehaviourCollectorSorted(IGameManager gameManager) : base(gameManager) { } + public BehaviourCollectorSorted(IGameManager gameManager, Comparison sortBy) : base(gameManager) => SortBy = sortBy; }