refactor(render): compose render frame orchestrator
Move the accepted draw transaction and failure recovery behind typed frame-phase owners so GameWindow only supplies immutable frame input. Preserve retail draw order, make ImGui/bootstrap shutdown ownership explicit, and restore exact text-render GL state on failures.\n\nCo-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
28e1cf8029
commit
9d7df1bfc5
25 changed files with 1675 additions and 279 deletions
|
|
@ -325,7 +325,7 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void World_scene_uses_the_typed_builder_and_game_window_releases_it_before_render_owners()
|
||||
public void World_scene_uses_the_typed_builder_and_orchestrator_owns_its_local_composition()
|
||||
{
|
||||
string gameWindow = GameWindowSource();
|
||||
string worldScene = File.ReadAllText(Path.Combine(
|
||||
|
|
@ -341,6 +341,14 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
Assert.DoesNotContain("private void UpdateSunFromSky(", gameWindow, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("private void UpdateSkyPes(", gameWindow, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("private static float ParseEnvFloat(", gameWindow, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(
|
||||
"private AcDream.App.Rendering.WorldRenderFrameBuilder?",
|
||||
gameWindow,
|
||||
StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(
|
||||
"private AcDream.App.Rendering.SkyPesFrameController?",
|
||||
gameWindow,
|
||||
StringComparison.Ordinal);
|
||||
AssertAppearsInOrder(
|
||||
worldScene,
|
||||
"_alpha.BeginFrame();",
|
||||
|
|
@ -350,9 +358,10 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
"NormalWorldDrawn: true");
|
||||
AssertAppearsInOrder(
|
||||
gameWindow,
|
||||
"_worldSceneRenderer = null;",
|
||||
"_worldRenderFrameBuilder = null;",
|
||||
"_skyPesFrame = null;",
|
||||
"var skyPesFrame = new AcDream.App.Rendering.SkyPesFrameController(",
|
||||
"var worldRenderFrameBuilder =",
|
||||
"new AcDream.App.Rendering.RenderFrameOrchestrator(",
|
||||
"_renderFrameOrchestrator = null;",
|
||||
"new(\"equipped children\"",
|
||||
"new(\"effect network state\"",
|
||||
"new(\"audio\"",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue