diff --git a/src/Utils/UncheckedCoreUtility.cs b/src/Utils/UncheckedCoreUtility.cs index a85f4fc..e31b032 100644 --- a/src/Utils/UncheckedCoreUtility.cs +++ b/src/Utils/UncheckedCoreUtility.cs @@ -45,4 +45,42 @@ namespace DCFApixels.DragonECS.UncheckedCore return true; } } + + public readonly struct EntitesMatrix + { + private readonly EcsWorld _world; + public EntitesMatrix(EcsWorld world) + { + _world = world; + } + public int PoolsCount + { + get { return _world.PoolsCount; } + } + public int EntitesCount + { + get { return _world.Capacity; } + } + public int GetEntityComponentsCount(int entityID) + { + return _world.GetComponentsCount(entityID); + } + public int GetEntityGen(int entityID) + { + return _world.GetGen(entityID); + } + public bool IsEntityUsed(int entityID) + { + return _world.IsUsed(entityID); + } + public bool this[int entityID, int poolID] + { + get + { + int entityStartChunkIndex = entityID << _world._entityComponentMaskLengthBitShift; + var chunkInfo = EcsMaskChunck.FromID(poolID); + return (_world._entityComponentMasks[entityStartChunkIndex + chunkInfo.chunkIndex] & chunkInfo.mask) != 0; + } + } + } }