using System.Collections.Generic; namespace Encompass { public class World { private readonly List enginesInOrder; private readonly EntityManager entityManager; private readonly ComponentManager componentManager; private readonly MessageManager messageManager; private readonly ComponentMessageManager componentMessageManager; private readonly RenderManager renderManager; internal World( List enginesInOrder, EntityManager entityManager, ComponentManager componentManager, MessageManager messageManager, ComponentMessageManager componentMessageManager, RenderManager renderManager ) { this.enginesInOrder = enginesInOrder; this.entityManager = entityManager; this.componentManager = componentManager; this.messageManager = messageManager; this.componentMessageManager = componentMessageManager; this.renderManager = renderManager; } public void Update(double dt) { messageManager.ProcessDelayedMessages(dt); foreach (var engine in enginesInOrder) { engine.Update(dt); } messageManager.ClearMessages(); componentMessageManager.ClearMessages(); entityManager.DestroyMarkedEntities(); componentManager.RemoveMarkedComponents(); componentManager.WriteComponents(); } public void Draw() { renderManager.Draw(); } } }