From 9708b29020d1facbede6b6d625146315d487c21c Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 2 Mar 2024 21:59:02 +0800 Subject: [PATCH] TODO solving --- src/Collections/EcsGroup.cs | 4 ++-- src/Configs/EcsWorldConfig.cs | 14 ++++++++++++++ src/EcsMask.cs | 6 +++--- src/EcsWorld.cs | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/Collections/EcsGroup.cs b/src/Collections/EcsGroup.cs index 62644ae..8012df1 100644 --- a/src/Collections/EcsGroup.cs +++ b/src/Collections/EcsGroup.cs @@ -204,11 +204,11 @@ namespace DCFApixels.DragonECS { return world.GetFreeGroup(); } - internal EcsGroup(EcsWorld world, int denseCapacity = 64) + internal EcsGroup(EcsWorld world, int denseCapacity) { _source = world; _source.RegisterGroup(this); - _dense = new int[denseCapacity]; //TODO добавить в конфиг мира значение + _dense = new int[denseCapacity]; _sparse = new int[world.Capacity]; } public void Dispose() diff --git a/src/Configs/EcsWorldConfig.cs b/src/Configs/EcsWorldConfig.cs index 0fbea2b..02cdd63 100644 --- a/src/Configs/EcsWorldConfig.cs +++ b/src/Configs/EcsWorldConfig.cs @@ -129,6 +129,20 @@ namespace DCFApixels.DragonECS // return self.GetOrDefault(RECYCLED_ENTITIES_CAPACITY, self.Get_EntitiesCapacity() / 2); //} + private const string GROUP_CAPACITY = nameof(GROUP_CAPACITY); + private const int GROUP_CAPACITY_DEFAULT = 512; + public static TConfig Set_GroupCapacity(this TConfig self, int value) + where TConfig : IEcsWorldConfigWriter + { + self.Set(GROUP_CAPACITY, value); + return self; + } + public static int Get_GroupCapacity(this IEcsWorldConfig self) + { + return self.GetOrDefault(GROUP_CAPACITY, GROUP_CAPACITY_DEFAULT); + } + + private const string POOLS_CAPACITY = nameof(POOLS_CAPACITY); private const int POOLS_CAPACITY_DEFAULT = 512; public static TConfig Set_PoolsCapacity(this TConfig self, int value) diff --git a/src/EcsMask.cs b/src/EcsMask.cs index dc18122..fb22afa 100644 --- a/src/EcsMask.cs +++ b/src/EcsMask.cs @@ -93,15 +93,15 @@ namespace DCFApixels.DragonECS #endregion #region Checks - public bool IsSubmaskOf(EcsMask otherMask) //TODO протестить + public bool IsSubmaskOf(EcsMask otherMask) { return IsSubmask(otherMask, this); } - public bool IsSupermaskOf(EcsMask otherMask) //TODO протестить + public bool IsSupermaskOf(EcsMask otherMask) { return IsSubmask(this, otherMask); } - public bool IsConflictWith(EcsMask otherMask) //TODO протестить + public bool IsConflictWith(EcsMask otherMask) { return OverlapsArray(inc, otherMask.exc) || OverlapsArray(exc, otherMask.inc); } diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs index 487844b..4d1de8c 100644 --- a/src/EcsWorld.cs +++ b/src/EcsWorld.cs @@ -563,7 +563,7 @@ namespace DCFApixels.DragonECS } internal EcsGroup GetFreeGroup() { - EcsGroup result = _groupsPool.Count <= 0 ? new EcsGroup(this) : _groupsPool.Pop(); + EcsGroup result = _groupsPool.Count <= 0 ? new EcsGroup(this, _config.Get_GroupCapacity()) : _groupsPool.Pop(); result._isReleased = false; return result; }