encompass-cs/encompass-cs/Renderer.cs

68 lines
2.1 KiB
C#
Raw Normal View History

2019-06-19 21:14:44 +00:00
using System;
using System.Collections.Generic;
2019-07-17 18:24:21 +00:00
using System.Linq;
2019-06-19 21:14:44 +00:00
namespace Encompass
{
public abstract class Renderer
{
2019-07-17 18:24:21 +00:00
internal EntityManager entityManager;
internal ComponentManager componentManager;
2019-06-19 21:14:44 +00:00
internal void AssignEntityManager(EntityManager entityManager)
{
this.entityManager = entityManager;
}
internal void AssignComponentManager(ComponentManager componentManager)
{
this.componentManager = componentManager;
}
protected bool EntityExists(Guid entityID)
{
return entityManager.EntityExists(entityID);
}
2019-06-19 21:14:44 +00:00
protected Entity GetEntity(Guid entityID)
{
return entityManager.GetEntity(entityID);
}
protected Guid GetEntityIDByComponentID(Guid componentID)
{
return componentManager.GetEntityIDByComponentID(componentID);
}
protected Entity GetEntityByComponentID(Guid componentID)
{
return GetEntity(GetEntityIDByComponentID(componentID));
}
protected IEnumerable<ValueTuple<Guid, TComponent>> ReadComponents<TComponent>() where TComponent : struct, IComponent
2019-06-19 21:14:44 +00:00
{
2019-08-01 23:44:29 +00:00
return componentManager.GetComponentsByType<TComponent>();
2019-06-19 21:14:44 +00:00
}
protected ValueTuple<Guid, TComponent> ReadComponent<TComponent>() where TComponent : struct, IComponent
2019-06-19 21:14:44 +00:00
{
2019-08-01 23:44:29 +00:00
return ReadComponents<TComponent>().First();
2019-06-19 21:14:44 +00:00
}
2019-07-17 18:24:21 +00:00
protected ValueTuple<Guid, TComponent> GetComponent<TComponent>(Entity entity) where TComponent : struct, IComponent
{
return componentManager.GetComponentByEntityAndType<TComponent>(entity);
2019-07-17 18:24:21 +00:00
}
protected bool HasComponent<TComponent>(Entity entity) where TComponent : struct, IComponent
{
return componentManager.EntityHasComponentOfType<TComponent>(entity);
}
protected bool SomeComponent<TComponent>() where TComponent : struct, IComponent
{
2019-08-01 23:44:29 +00:00
return componentManager.ComponentOfTypeExists<TComponent>();
}
2019-06-19 21:14:44 +00:00
}
}