namespace MoonTools.ECS; public abstract class EntityComponentReader { protected readonly World World; public FilterBuilder FilterBuilder => World.FilterBuilder; protected EntityComponentReader(World world) { World = world; } protected string GetTag(in Entity entity) => World.GetTag(entity); protected bool Has(in Entity Entity) where T : unmanaged => World.Has(Entity); protected bool Some() where T : unmanaged => World.Some(); protected ref T Get(in Entity Entity) where T : unmanaged => ref World.Get(Entity); protected ref T GetSingleton() where T : unmanaged => ref World.GetSingleton(); protected Entity GetSingletonEntity() where T : unmanaged => World.GetSingletonEntity(); protected ReverseSpanEnumerator<(Entity, Entity)> Relations() where T : unmanaged => World.Relations(); protected bool Related(in Entity entityA, in Entity entityB) where T : unmanaged => World.Related(entityA, entityB); protected T GetRelationData(in Entity entityA, in Entity entityB) where T : unmanaged => World.GetRelationData(entityA, entityB); protected ReverseSpanEnumerator OutRelations(in Entity entity) where T : unmanaged => World.OutRelations(entity); protected Entity OutRelationSingleton(in Entity entity) where T : unmanaged => World.OutRelationSingleton(entity); protected bool HasOutRelation(in Entity entity) where T : unmanaged => World.HasOutRelation(entity); protected int OutRelationCount(in Entity entity) where T : unmanaged => World.OutRelationCount(entity); protected Entity NthOutRelation(in Entity entity, int n) where T : unmanaged => World.NthOutRelation(entity, n); protected ReverseSpanEnumerator InRelations(in Entity entity) where T : unmanaged => World.InRelations(entity); protected Entity InRelationSingleton(in Entity entity) where T : unmanaged => World.InRelationSingleton(entity); protected bool HasInRelation(in Entity entity) where T : unmanaged => World.HasInRelation(entity); protected int InRelationCount(in Entity entity) where T : unmanaged => World.InRelationCount(entity); protected Entity NthInRelation(in Entity entity, int n) where T : unmanaged => World.NthInRelation(entity, n); }