using System; using System.Collections.Generic; namespace Encompass { public abstract class Renderer { internal EntityManager _entityManager; internal ComponentManager _componentManager; internal void AssignEntityManager(EntityManager entityManager) { _entityManager = entityManager; } internal void AssignComponentManager(ComponentManager componentManager) { _componentManager = componentManager; } public abstract void Render(double dt, double alpha); protected ReadOnlySpan ReadEntities() where TComponent : struct { return _componentManager.GetExistingEntities(); } protected IEnumerable ReadEntitiesAsEnumerable() where TComponent : struct { return _componentManager.GetExistingEntitiesAsEnumerable(); } protected ref readonly Entity ReadEntity() where TComponent : struct { return ref _componentManager.ExistingSingularEntity(); } protected ReadOnlySpan ReadComponents() where TComponent : struct { return _componentManager.GetComponentsByType(); } protected IEnumerable ReadComponentsAsEnumerable() where TComponent : struct { return _componentManager.GetComponentsByTypeEnumerable(); } protected ref readonly TComponent ReadComponent() where TComponent : struct { return ref _componentManager.ExistingSingular(); } protected ref readonly TComponent GetComponent(Entity entity) where TComponent : struct { return ref _componentManager.GetComponentByEntityAndType(entity.ID); } protected bool HasComponent(Entity entity) where TComponent : struct { return _componentManager.EntityHasComponentOfType(entity.ID); } protected bool SomeComponent() where TComponent : struct { return _componentManager.SomeExistingComponent(); } } }