encompass-cs/src/EntityManager.cs

54 lines
1.2 KiB
C#
Raw Normal View History

using System.Collections.Generic;
2019-06-16 01:05:56 +00:00
namespace Encompass
{
internal class EntityManager
{
private uint nextID = 1;
private List<Entity> entities = new List<Entity>();
private Dictionary<uint, Entity> IDToEntity = new Dictionary<uint, Entity>();
private List<Entity> entitiesMarkedForDestroy = new List<Entity>();
private ComponentManager componentManager;
public EntityManager(
ComponentManager componentManager
2019-06-16 01:05:56 +00:00
)
{
this.componentManager = componentManager;
}
2019-06-16 01:05:56 +00:00
public Entity CreateEntity()
{
return new Entity(NextID(), componentManager);
}
2019-06-16 01:05:56 +00:00
public Entity GetEntity(uint id)
{
return this.IDToEntity[id];
}
2019-06-16 01:05:56 +00:00
public void MarkForDestroy(Entity entity)
{
entitiesMarkedForDestroy.Add(entity);
}
2019-06-16 01:05:56 +00:00
internal void DestroyMarkedEntities()
{
foreach (var entity in entitiesMarkedForDestroy)
{
entity.RemoveAllComponents();
}
}
2019-06-16 01:05:56 +00:00
private uint NextID()
{
var id = this.nextID;
this.nextID++;
return id;
}
}
}