2022-03-05 02:01:44 +00:00
|
|
|
|
namespace MoonTools.ECS;
|
|
|
|
|
|
|
|
|
|
public class World
|
|
|
|
|
{
|
2022-03-07 18:56:53 +00:00
|
|
|
|
private readonly List<System> Systems;
|
|
|
|
|
private readonly List<Renderer> Renderers;
|
|
|
|
|
private readonly EntityStorage EntityStorage;
|
|
|
|
|
private readonly ComponentDepot ComponentDepot;
|
|
|
|
|
private MessageDepot MessageDepot;
|
2022-03-05 02:01:44 +00:00
|
|
|
|
|
2022-03-07 18:56:53 +00:00
|
|
|
|
internal World(
|
|
|
|
|
List<System> systems,
|
|
|
|
|
List<Renderer> renderers,
|
|
|
|
|
ComponentDepot componentDepot,
|
|
|
|
|
EntityStorage entityStorage,
|
|
|
|
|
MessageDepot messageDepot
|
|
|
|
|
)
|
2022-03-05 02:01:44 +00:00
|
|
|
|
{
|
2022-03-07 18:56:53 +00:00
|
|
|
|
Systems = systems;
|
|
|
|
|
Renderers = renderers;
|
|
|
|
|
ComponentDepot = componentDepot;
|
|
|
|
|
EntityStorage = entityStorage;
|
|
|
|
|
MessageDepot = messageDepot;
|
2022-03-05 02:01:44 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Update(TimeSpan delta)
|
|
|
|
|
{
|
2022-03-06 06:12:27 +00:00
|
|
|
|
foreach (var system in Systems)
|
2022-03-05 02:01:44 +00:00
|
|
|
|
{
|
|
|
|
|
system.Update(delta);
|
|
|
|
|
}
|
2022-03-07 07:26:54 +00:00
|
|
|
|
|
|
|
|
|
MessageDepot.Clear();
|
2022-03-05 02:01:44 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Draw(TimeSpan delta)
|
|
|
|
|
{
|
2022-03-06 06:12:27 +00:00
|
|
|
|
foreach (var renderer in Renderers)
|
2022-03-05 02:01:44 +00:00
|
|
|
|
{
|
|
|
|
|
renderer.Draw(delta);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|