Revert "fix(render): Phase A8 RR7.2 — _buildingRegistries key mismatch"
This reverts commit efe35201fc.
This commit is contained in:
parent
07c5981824
commit
9aaae02610
1 changed files with 4 additions and 14 deletions
|
|
@ -1863,7 +1863,7 @@ public sealed class GameWindow : IDisposable
|
|||
_terrain?.RemoveLandblock(id);
|
||||
_physicsEngine.RemoveLandblock(id);
|
||||
_cellVisibility.RemoveLandblock((id >> 16) & 0xFFFFu);
|
||||
_buildingRegistries.Remove(id & 0xFFFF0000u); // Phase A8 RR7.2: masked key matches storage
|
||||
_buildingRegistries.Remove(id); // Phase A8
|
||||
});
|
||||
// A.5 T22.5: apply max-completions from resolved quality.
|
||||
_streamingController.MaxCompletionsPerFrame = _resolvedQuality.MaxCompletionsPerFrame;
|
||||
|
|
@ -5872,7 +5872,7 @@ public sealed class GameWindow : IDisposable
|
|||
_physicsEngine.AddLandblock(lb.LandblockId, terrainSurface, cellSurfaces,
|
||||
portalPlanes, origin.X, origin.Y);
|
||||
|
||||
// Phase A8 (2026-05-26, fixed 2026-05-27 RR7.2): build per-landblock
|
||||
// Phase A8 (2026-05-26, fixed 2026-05-27 RR7.1): build per-landblock
|
||||
// BuildingRegistry from LandBlockInfo.Buildings, stamping
|
||||
// LoadedCell.BuildingId for each cell in a building's cell set.
|
||||
// Uses _cellVisibility.AllLoadedCells (every cell loaded so far,
|
||||
|
|
@ -5881,19 +5881,9 @@ public sealed class GameWindow : IDisposable
|
|||
// pass get stamped at drain time (see _pendingCells loop above).
|
||||
// Cells without a building stay at BuildingId == null (outdoor
|
||||
// surface cells; dungeon cells not in LandBlockInfo.Buildings).
|
||||
//
|
||||
// KEY NORMALIZATION (RR7.2): lb.LandblockId is the LandBlock file
|
||||
// id (e.g. 0xA9B4FFFF — the 0xFFFF low word is the dat-file
|
||||
// discriminator), but cell ids like 0xA9B40150 mask to
|
||||
// 0xA9B40000. All lookups (drain late-stamp at line ~5708, gate
|
||||
// check at line ~7090) use `& 0xFFFF0000u`, so storage MUST use
|
||||
// the same masked form or every lookup misses — which silently
|
||||
// routed every indoor frame through the outdoor branch in the
|
||||
// RR7.1 launch.
|
||||
if (lbInfo is not null)
|
||||
{
|
||||
uint lbRegistryKey = lb.LandblockId & 0xFFFF0000u;
|
||||
_buildingRegistries[lbRegistryKey] =
|
||||
_buildingRegistries[lb.LandblockId] =
|
||||
AcDream.App.Rendering.Wb.BuildingLoader.Build(
|
||||
lbInfo, lb.LandblockId, _cellVisibility.AllLoadedCells);
|
||||
}
|
||||
|
|
@ -9093,7 +9083,7 @@ public sealed class GameWindow : IDisposable
|
|||
_terrain?.RemoveLandblock(id);
|
||||
_physicsEngine.RemoveLandblock(id);
|
||||
_cellVisibility.RemoveLandblock((id >> 16) & 0xFFFFu);
|
||||
_buildingRegistries.Remove(id & 0xFFFF0000u); // Phase A8 RR7.2: masked key
|
||||
_buildingRegistries.Remove(id); // Phase A8
|
||||
});
|
||||
_streamingController.MaxCompletionsPerFrame = newResolved.MaxCompletionsPerFrame;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue