refactor(render): extract world scene frame owner
Move fallback and PView world drawing, shared alpha, particles, visibility, selection, and diagnostics behind focused frame owners. Make exceptional frames failure-atomic by restoring the shared GL baseline and preserving primary alpha failures through cleanup. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
85239fb373
commit
28e1cf8029
25 changed files with 2679 additions and 844 deletions
|
|
@ -61,6 +61,18 @@ internal readonly record struct WorldRenderFrame(
|
|||
public LoadedCell? ClipRoot => Roots.ViewerRoot ?? Buildings.OutdoorNode;
|
||||
}
|
||||
|
||||
internal interface IWorldRenderFrameBuilder
|
||||
{
|
||||
WorldRenderFrame Build(
|
||||
in RenderFrameFoundation foundation,
|
||||
bool waitingForLogin,
|
||||
DayGroupData? activeDayGroup);
|
||||
|
||||
void ObserveDrawableCells(IReadOnlySet<uint> drawableCells);
|
||||
|
||||
void ClearDrawableCells();
|
||||
}
|
||||
|
||||
internal interface IWorldFrameCameraSource
|
||||
{
|
||||
WorldCameraFrame Resolve();
|
||||
|
|
@ -113,7 +125,7 @@ internal interface IWorldFrameBuildingSource
|
|||
/// Orders typed world-frame fact sources without owning their borrowed render
|
||||
/// resources. It makes no draw decision and retains no result from a prior call.
|
||||
/// </summary>
|
||||
internal sealed class WorldRenderFrameBuilder
|
||||
internal sealed class WorldRenderFrameBuilder : IWorldRenderFrameBuilder
|
||||
{
|
||||
private readonly IWorldFrameCameraSource _camera;
|
||||
private readonly IWorldFrameVisibilityPreparation _visibility;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue