refactor(world): own live environment state

Move the DAT sky, selected day group, world clock, weather, AdminEnvirons bridge, and debug cycles into a one-shot WorldEnvironmentController while preserving GameWindow's public aliases and accepted startup/session/render order. Correct the named retail citations and register the remaining environment audio and fog/radar gaps.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-22 10:54:33 +02:00
parent 557eb7ef6b
commit d09e246d3a
19 changed files with 606 additions and 368 deletions

View file

@ -13,25 +13,6 @@ internal interface IWorldSceneSkyStateSource
float DayFraction { get; }
}
/// <summary>
/// Holds the selected retail day group beside the world clock that provides
/// its current interpolation point. Day-group selection remains an update-time
/// concern; render owners receive this read-only seam.
/// </summary>
internal sealed class WorldSceneSkyState : IWorldSceneSkyStateSource
{
private readonly WorldTimeService _worldTime;
public WorldSceneSkyState(WorldTimeService worldTime)
{
_worldTime = worldTime ?? throw new ArgumentNullException(nameof(worldTime));
}
public DayGroupData? ActiveDayGroup { get; set; }
public float DayFraction => (float)_worldTime.DayFraction;
}
internal interface IWorldSceneEntitySource
{
IEnumerable<(uint LandblockId, Vector3 AabbMin, Vector3 AabbMax,