refactor(runtime): close simulation ownership
Move remote-motion construction, CreateObject vector initialization, final simulation-component retirement, and the combined J5 ownership ledger into Runtime. Delete App compatibility views and moved-state reconstruction while preserving the existing graphical projection and retail update order.
This commit is contained in:
parent
c30a3efeb0
commit
cdee7a4b49
57 changed files with 1013 additions and 410 deletions
|
|
@ -168,6 +168,27 @@ public sealed class PhysicsEngine
|
|||
DataCache?.CellGraph.RemoveLandblock(landblockId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Releases every collision landblock and retained shadow registration
|
||||
/// owned by this engine. Runtime calls this only at terminal disposal;
|
||||
/// ordinary streaming still uses the typed per-landblock retirement path.
|
||||
/// </summary>
|
||||
public void Clear()
|
||||
{
|
||||
if (_landblocks.Count != 0)
|
||||
{
|
||||
var landblocks = new uint[_landblocks.Count];
|
||||
_landblocks.Keys.CopyTo(landblocks, 0);
|
||||
foreach (uint landblockId in landblocks)
|
||||
RemoveLandblock(landblockId);
|
||||
}
|
||||
|
||||
// Dynamic live registrations can remain intentionally suspended with
|
||||
// no cell rows after their last landblock retires. Terminal engine
|
||||
// ownership must retire those logical registrations as well.
|
||||
ShadowObjects.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retire a Near landblock's indoor-cell and static-object collision layer
|
||||
/// while preserving its terrain surface and world offset for Far-tier use.
|
||||
|
|
|
|||
|
|
@ -795,6 +795,21 @@ public sealed class ShadowObjectRegistry
|
|||
/// <summary>Suspended logical registrations awaiting spatial re-entry.</summary>
|
||||
public int SuspendedRegistrationCount => _suspendedEntities.Count;
|
||||
|
||||
/// <summary>
|
||||
/// Retires the complete logical registry at terminal physics-engine
|
||||
/// disposal, including suspended live registrations that own no cell row.
|
||||
/// </summary>
|
||||
public void Clear()
|
||||
{
|
||||
_cells.Clear();
|
||||
_entityToCells.Clear();
|
||||
_suspendedEntities.Clear();
|
||||
_withdrawnPrefixesByOwner.Clear();
|
||||
_entityShapes.Clear();
|
||||
_entityReg.Clear();
|
||||
_fallback = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Debug: enumerate every registered ShadowEntry (deduplicated across cells).
|
||||
/// Single-shape entities return one entry per shape; multi-part entities
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue