perf!: improved sorted behaviour collector by using binary insertion to reduce performance impact

This commit is contained in:
2025-05-31 12:00:32 +03:00
parent 61e2761580
commit 1acc8bdb8f
7 changed files with 103 additions and 19 deletions

View File

@@ -1,8 +1,10 @@
using System.Collections.Generic;
namespace Syntriax.Engine.Core;
public class DrawManager : UniverseObject
{
private static System.Comparison<IBehaviour> SortByPriority() => (x, y) => y.Priority.CompareTo(x.Priority);
private static Comparer<IBehaviour> SortByPriority() => Comparer<IBehaviour>.Create((x, y) => y.Priority.CompareTo(x.Priority));
private readonly ActiveBehaviourCollectorSorted<IPreDraw> preDrawEntities = new() { SortBy = SortByPriority() };
private readonly ActiveBehaviourCollectorSorted<IDraw> drawEntities = new() { SortBy = SortByPriority() };

View File

@@ -4,7 +4,7 @@ namespace Syntriax.Engine.Core;
public class UpdateManager : UniverseObject
{
private static System.Comparison<IBehaviour> SortByPriority() => (x, y) => y.Priority.CompareTo(x.Priority);
private static Comparer<IBehaviour> SortByPriority() => Comparer<IBehaviour>.Create((x, y) => y.Priority.CompareTo(x.Priority));
private readonly ActiveBehaviourCollectorSorted<IFirstFrameUpdate> firstFrameUpdates = new() { SortBy = SortByPriority() };
private readonly ActiveBehaviourCollectorSorted<IPreUpdate> preUpdateEntities = new() { SortBy = SortByPriority() };