From b580d6918517031c2f55dd2436d3567fef08e71b Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Wed, 22 Nov 2023 16:08:49 +0800 Subject: [PATCH] refactoring DelEntBuffer --- src/EcsWorld.cs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs index b17d31e..d4ca88b 100644 --- a/src/EcsWorld.cs +++ b/src/EcsWorld.cs @@ -2,7 +2,6 @@ using DCFApixels.DragonECS.Utils; using System; using System.Collections.Generic; -using System.Diagnostics; using System.Runtime.CompilerServices; namespace DCFApixels.DragonECS @@ -23,7 +22,7 @@ namespace DCFApixels.DragonECS private int[] _delEntBuffer; private int _delEntBufferCount; private int _delEntBufferMinCount; - private int _usedSpace; + private int _freeSpace; private List> _groups = new List>(); private Stack _groupsPool = new Stack(64); @@ -35,7 +34,9 @@ namespace DCFApixels.DragonECS public bool IsDestroyed => _isDestroyed; public int Count => _entitiesCount; public int Capacity => _entitesCapacity; //_denseEntities.Length; - internal int DelBufferCount => _usedSpace - _entitiesCount; //_denseEntities.Length; + + public int DelEntBufferCount => _delEntBufferCount; + public EcsReadonlyGroup Entities => _allEntites.Readonly; public ReadOnlySpan AllPools => _pools;// new ReadOnlySpan(pools, 0, _poolsCount); #endregion @@ -133,15 +134,13 @@ namespace DCFApixels.DragonECS #endregion #region Entity - - private int FreeSpace => Capacity - _usedSpace; public int NewEmptyEntity() { - if(FreeSpace <= 1 && DelBufferCount > _delEntBufferMinCount) + if(_freeSpace <= 1 && _delEntBufferCount > _delEntBufferMinCount) ReleaseDelEntityBuffer(); int entityID = _entityDispenser.GetFree(); - _usedSpace++; + _freeSpace--; _entitiesCount++; if (_gens.Length <= entityID) @@ -235,7 +234,7 @@ namespace DCFApixels.DragonECS _listeners.InvokeOnReleaseDelEntityBuffer(buffser); for (int i = 0; i < _delEntBufferCount; i++) _entityDispenser.Release(_delEntBuffer[i]); - _usedSpace = _entitiesCount; + _freeSpace = _entitesCapacity - _entitiesCount; _delEntBufferCount = 0; } public void DeleteEmptyEntites()