This commit is contained in:
DCFApixels 2025-04-22 17:13:25 +08:00
parent 6f08b7a107
commit a200ea6153

View File

@ -48,7 +48,6 @@ namespace DCFApixels.DragonECS
//private int[] _denseEntitiesDelayed; //private int[] _denseEntitiesDelayed;
private int[] _table; private int[] _table;
private int _denseEntitiesDelayedCount = 0; private int _denseEntitiesDelayedCount = 0;
private int _denseEntitiesDelayedPtr = 0;
private bool _isDenseEntitiesDelayedValid = false; private bool _isDenseEntitiesDelayedValid = false;
private int _recycledCount = 0; private int _recycledCount = 0;
@ -72,7 +71,7 @@ namespace DCFApixels.DragonECS
} }
public int Capacity public int Capacity
{ {
get { return _items.Length; } get { return _capacity; }
} }
public int ComponentTypeID public int ComponentTypeID
{ {
@ -113,7 +112,7 @@ namespace DCFApixels.DragonECS
_mediator.RegisterComponent(entityID, _componentTypeID, _maskBit); _mediator.RegisterComponent(entityID, _componentTypeID, _maskBit);
ref T result = ref _items[itemIndex]; ref T result = ref _items[itemIndex];
//_sparseEntities[itemIndex] = entityID; //_sparseEntities[itemIndex] = entityID;
_table[itemIndex] = entityID; //_table[itemIndex] = entityID;
EnableComponent(ref result); EnableComponent(ref result);
#if !DRAGONECS_DISABLE_POOLS_EVENTS #if !DRAGONECS_DISABLE_POOLS_EVENTS
_listeners.InvokeOnAddAndGet(entityID, _listenersCachedCount); _listeners.InvokeOnAddAndGet(entityID, _listenersCachedCount);
@ -170,7 +169,7 @@ namespace DCFApixels.DragonECS
itemIndex = GetFreeItemIndex(entityID); itemIndex = GetFreeItemIndex(entityID);
_mediator.RegisterComponent(entityID, _componentTypeID, _maskBit); _mediator.RegisterComponent(entityID, _componentTypeID, _maskBit);
//_sparseEntities[itemIndex] = entityID; //_sparseEntities[itemIndex] = entityID;
_table[itemIndex] = entityID; //_table[itemIndex] = entityID;
EnableComponent(ref _items[itemIndex]); EnableComponent(ref _items[itemIndex]);
#if !DRAGONECS_DISABLE_POOLS_EVENTS #if !DRAGONECS_DISABLE_POOLS_EVENTS
_listeners.InvokeOnAdd(entityID, _listenersCachedCount); _listeners.InvokeOnAdd(entityID, _listenersCachedCount);
@ -410,17 +409,19 @@ namespace DCFApixels.DragonECS
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private int GetFreeItemIndex(int entityID) private int GetFreeItemIndex(int entityID)
{ {
if (_denseEntitiesDelayedCount >= _items.Length) if (_denseEntitiesDelayedCount == _capacity)
{ {
UpdateDenseEntities(); UpdateDenseEntities();
} if (_itemsCount + 1 == _capacity)
if (_itemsCount + 1 >= _items.Length)
{ {
Resize(_items.Length << 1); Resize(_items.Length << 1);
} }
}
int result = 0; int result = 0;
if(_recycledCount > 0) //ref int tf = ref _table[_denseEntitiesDelayedCount | _capacity];
if (_recycledCount != 0)
{ {
_recycledCount--; _recycledCount--;
//result = _denseEntitiesDelayed[_denseEntitiesDelayedCount]; //result = _denseEntitiesDelayed[_denseEntitiesDelayedCount];
@ -430,10 +431,7 @@ namespace DCFApixels.DragonECS
{ {
result = _denseEntitiesDelayedCount; result = _denseEntitiesDelayedCount;
} }
//_denseEntitiesDelayed[_denseEntitiesDelayedCount] = entityID;
_table[_denseEntitiesDelayedCount | _capacity] = entityID;
_itemsCount++;
_denseEntitiesDelayedCount++;
#if DRAGONECS_DEEP_DEBUG #if DRAGONECS_DEEP_DEBUG
//if (_sparseEntities[result] != 0) //if (_sparseEntities[result] != 0)
@ -446,6 +444,12 @@ namespace DCFApixels.DragonECS
Throw.UndefinedException(); Throw.UndefinedException();
} }
#endif #endif
//_denseEntitiesDelayed[_denseEntitiesDelayedCount] = entityID;
_table[result] = _table[_denseEntitiesDelayedCount | _capacity] = entityID;
_itemsCount++;
_denseEntitiesDelayedCount++;
//_isDenseEntitiesDelayedValid = false;
return result; return result;
} }
//private void CheckOrUpsize() //private void CheckOrUpsize()