diff --git a/src/AcDream.App/Rendering/GameWindow.cs b/src/AcDream.App/Rendering/GameWindow.cs index a2531674..a42ba321 100644 --- a/src/AcDream.App/Rendering/GameWindow.cs +++ b/src/AcDream.App/Rendering/GameWindow.cs @@ -6890,12 +6890,16 @@ public sealed class GameWindow : IDisposable // window otherwise pulls in ~129 unrelated ocean-grid dungeons. Building // interiors (cottage/inn) have SeenOutside cells, so they are NOT gated // and keep their surrounding terrain. - // Mirrors the playerInsideCell computation below (CurrCell → registry - // LoadedCell.SeenOutside): true only for a sealed indoor cell. + // True only for a sealed indoor cell. Read the physics CurrCell's own + // SeenOutside (ObjCell.SeenOutside, set from the EnvCell dat flags) rather + // than the render registry: the registry lookup only succeeds AFTER the + // landblock FINALIZES (~tens of seconds for a 205-cell dungeon), which + // delayed the collapse and let the full 25×25 neighbor window churn in + // first (the "~30s to stabilize" report). CurrCell.SeenOutside is set the + // moment the player is placed, so the collapse now engages at the snap. bool insideDungeon = false; if (_physicsEngine.DataCache?.CellGraph.CurrCell is AcDream.Core.World.Cells.EnvCell pcEnv - && _cellVisibility.TryGetCell(pcEnv.Id, out var pcReg) - && pcReg is { SeenOutside: false }) + && !pcEnv.SeenOutside) { insideDungeon = true; // Pin the collapse to the cell's OWN landblock (cell id high 16 bits),