encompass-cs/src/WorldBuilder.cs

54 lines
1.4 KiB
C#

using System.Collections.Generic;
namespace Encompass
{
public class WorldBuilder
{
private List<Engine> engines = new List<Engine>();
private ComponentManager componentManager;
private EntityManager entityManager;
private MessageManager messageManager;
public WorldBuilder()
{
componentManager = new ComponentManager();
entityManager = new EntityManager(componentManager);
messageManager = new MessageManager();
}
public Entity CreateEntity()
{
return this.entityManager.CreateEntity();
}
public Engine AddEngine<TEngine>() where TEngine : Engine, new()
{
var engine = new TEngine();
engine.AssignEntityManager(this.entityManager);
engine.AssignComponentManager(this.componentManager);
engine.AssignMessageManager(this.messageManager);
engines.Add(engine);
return engine;
}
public World Build()
{
var world = new World(
this.engines,
this.entityManager,
this.componentManager,
this.messageManager
);
this.componentManager.ActivateComponents();
this.componentManager.RemoveComponents();
return world;
}
}
}