fix(portal): synchronize destination presentation state

This commit is contained in:
Erik 2026-07-16 21:17:13 +02:00
parent 4b1bceefbb
commit e95f55f25b
42 changed files with 2815 additions and 288 deletions

View file

@ -95,7 +95,7 @@ public class StreamingControllerTests
}
[Fact]
public void DrainingUnloadedResult_RemovesFromState()
public void DrainingUnloadedResult_RemovesUnownedLandblockFromState()
{
var state = new GpuWorldState();
var fake = new FakeStreamer();
@ -103,7 +103,10 @@ public class StreamingControllerTests
fake.EnqueueLoad, fake.EnqueueUnload, fake.DrainCompletions,
(_, _) => { }, state, nearRadius: 2, farRadius: 2);
const uint landblockId = 0x3232FFFFu;
// The current region is centered on 0x3232. A completed unload for a
// landblock it no longer owns must remove state; an unload for 0x3232
// itself is now correctly rejected by the away->back lifecycle gate.
const uint landblockId = 0x2020FFFFu;
var lb = new LoadedLandblock(landblockId, new LandBlock(), System.Array.Empty<WorldEntity>());
state.AddLandblock(lb);
fake.Pending.Enqueue(new LandblockStreamResult.Unloaded(landblockId));