feat(core): UCG Stage 1 — populate CellGraph from CacheCellStruct + AddLandblock (inert)
PhysicsDataCache gains a `CellGraph` property (UCG Stage 1). The env-cell hook is placed at the very top of CacheCellStruct — before the idempotency guard and the null-PhysicsBSP early-return — so BSP-less cells are included in the graph even though they are dropped from the legacy _cellStruct map. PhysicsEngine.AddLandblock/RemoveLandblock mirror terrain registration into the graph via a null-guarded DataCache?.CellGraph call. Zero behavior change: CellGraph has no readers this stage. A using-alias (UcgEnvCell / UcgCellGraph) resolves the EnvCell name collision between AcDream.Core.World.Cells and DatReaderWriter.DBObjs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
1aede3d6aa
commit
8e703bef22
3 changed files with 55 additions and 0 deletions
|
|
@ -60,6 +60,9 @@ public sealed class PhysicsEngine
|
|||
float worldOffsetX, float worldOffsetY)
|
||||
{
|
||||
_landblocks[landblockId] = new LandblockPhysics(terrain, cells, portals, worldOffsetX, worldOffsetY);
|
||||
|
||||
// UCG Stage 1: mirror terrain into the unified graph (inert this stage).
|
||||
DataCache?.CellGraph.RegisterTerrain(landblockId, terrain, new Vector3(worldOffsetX, worldOffsetY, 0f));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -69,6 +72,9 @@ public sealed class PhysicsEngine
|
|||
{
|
||||
_landblocks.Remove(landblockId);
|
||||
ShadowObjects.RemoveLandblock(landblockId);
|
||||
|
||||
// UCG Stage 1: mirror removal into the unified graph (inert this stage).
|
||||
DataCache?.CellGraph.RemoveLandblock(landblockId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue