Split viewer and simulation into separate apps

This commit is contained in:
2026-03-12 17:18:29 -04:00
parent 0a76c60ab1
commit 2fb90162ef
45 changed files with 1982 additions and 6600 deletions

View File

@@ -0,0 +1,36 @@
using SpaceGame.Simulation.Api.Contracts;
namespace SpaceGame.Simulation.Api.Simulation;
public sealed class WorldService(IWebHostEnvironment environment)
{
private readonly object _sync = new();
private readonly ScenarioLoader _loader = new(environment.ContentRootPath);
private readonly SimulationEngine _engine = new();
private SimulationWorld _world = new ScenarioLoader(environment.ContentRootPath).Load();
public WorldSnapshot GetSnapshot()
{
lock (_sync)
{
return _engine.BuildSnapshot(_world);
}
}
public void Tick(float deltaSeconds)
{
lock (_sync)
{
_engine.Tick(_world, deltaSeconds);
}
}
public WorldSnapshot Reset()
{
lock (_sync)
{
_world = _loader.Load();
return _engine.BuildSnapshot(_world);
}
}
}