fix(streaming): commit EnvCell landblocks atomically (#214)

Carry one complete cell payload with each streaming completion and publish visibility, physics, and render state on the render thread. Remove the obsolete post-readiness login reload that triggered a duplicate dungeon build.

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-13 18:45:24 +02:00
parent 85980fe13f
commit b0c175afc0
26 changed files with 973 additions and 617 deletions

View file

@ -163,6 +163,33 @@ public class StreamingControllerDungeonGateTests
Assert.DoesNotContain(h.Loads, l => l.Kind == LandblockStreamJobKind.LoadFar);
}
[Fact]
public void InitializeKnownLoginCenter_DungeonPerformsOneCollapseWithoutReloadChurn()
{
var h = Make();
h.Ctrl.InitializeKnownLoginCenter(0, 7, isSealedDungeon: true);
h.Ctrl.InitializeKnownLoginCenter(0, 7, isSealedDungeon: true);
Assert.Single(h.Loads);
Assert.Equal(Encode(0, 7), h.Loads[0].Id);
Assert.Equal(1, h.ClearCalls());
}
[Fact]
public void InitializeKnownLoginCenter_OutdoorWaitsForFirstCorrectlyCenteredTick()
{
var h = Make();
h.Ctrl.InitializeKnownLoginCenter(140, 4, isSealedDungeon: false);
Assert.Empty(h.Loads);
Assert.Equal(0, h.ClearCalls());
h.Ctrl.Tick(140, 4, insideDungeon: false);
Assert.Contains(h.Loads, load => load.Id == Encode(140, 4));
}
[Fact]
public void PreCollapse_AfterBootstrapTick_CancelsWindow_UnloadsResidentNeighbors_KeepsDungeon()
{