using System; using System.Runtime.CompilerServices; namespace DCFApixels.DragonECS { public interface IEcsTable { #region Properties /// Table Archetype public Type Archetype { get; } public int Count { get; } public int Capacity { get; } public EcsReadonlyGroup Entities => default; #endregion #region Methods public int GetComponentID(); public TPool GetPool() where TComponent : struct where TPool : EcsPoolBase, new(); public ReadOnlySpan GetAllPools(); public TQuery Where(out TQuery query) where TQuery : EcsQueryBase; public TQuery Select() where TQuery : EcsQueryBase; public bool IsMaskCompatible(EcsComponentMask mask, int entityID); public void Destroy(); #endregion #region Internal Methods internal void RegisterGroup(EcsGroup group); internal EcsGroup GetGroupFromPool(); internal void ReleaseGroup(EcsGroup group); #endregion } }