encompass-cs/src/WorldBuilder.cs

44 lines
1.1 KiB
C#

using System.Collections.Generic;
namespace Encompass {
public class WorldBuilder {
private List<Engine> engines = new List<Engine>();
private ComponentManager componentManager;
private EntityManager entityManager;
public WorldBuilder() {
componentManager = new ComponentManager();
entityManager = new EntityManager(componentManager);
}
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);
engines.Add(engine);
return engine;
}
public World Build() {
var world = new World(
this.engines,
this.entityManager,
this.componentManager
);
this.componentManager.ActivateComponents();
this.componentManager.RemoveComponents();
return world;
}
}
}