fix(rendering): synchronize hidden live projections

Inbound state continues while portal reveal blocks ordinary world simulation. Synchronize only the derived render projection after those hidden-frame network and command phases so the first revealed draw cannot observe a stale live transform, without advancing effects, particles, attachments, or lights.
This commit is contained in:
Erik 2026-07-25 03:14:15 +02:00
parent 528dec6072
commit 6a026c5ab0
6 changed files with 52 additions and 4 deletions

View file

@ -57,6 +57,31 @@ public sealed class RecallTeleportAnimationTests
Assert.Equal(["network", "commands"], calls);
}
[Fact]
public void LiveFrame_WhileCellsAreBlocked_SynchronizesOnlyRenderProjection()
{
var calls = new List<string>();
var availability = new WorldGenerationAvailabilityState();
availability.Begin(1);
var frame = new RetailLiveFrameCoordinator(
new TestLiveObjectFramePhase(_ => calls.Add("objects")),
new GpuWorldState(availability: availability),
new TestLiveSessionFramePhase(() => calls.Add("network")),
new TestPostNetworkCommandFramePhase(
() => calls.Add("commands")),
new TestLiveSpatialReconcilePhase(
() => calls.Add("spatial")),
availability,
new TestRenderProjectionSyncPhase(
() => calls.Add("render-projection")));
frame.Tick(1f / 60f);
Assert.Equal(
["network", "commands", "render-projection"],
calls);
}
[Fact]
public void LiveFrame_InvalidHostDeltaCannotBlockNetworkDispatch()
{