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:
parent
528dec6072
commit
6a026c5ab0
6 changed files with 52 additions and 4 deletions
|
|
@ -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()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue