refactor(streaming): complete landblock presentation cutover
Remove the legacy GameWindow apply path and make the concrete render, physics, and static publishers the only production owner graph. Serialize full-window retirement with shared-origin teleport and session boundaries so old coordinate-frame resources cannot survive into a new world or login.
This commit is contained in:
parent
801d8a189c
commit
c79d0a49da
12 changed files with 1373 additions and 402 deletions
|
|
@ -127,7 +127,8 @@ public sealed class PhysicsEngine
|
|||
DataCache?.RemoveBuildingsForLandblock(landblockId);
|
||||
|
||||
// #145: if the player's current cell belonged to the landblock being removed (a teleport
|
||||
// drops the stale source center via OnLivePositionUpdated), clear it. Otherwise CurrCell
|
||||
// retires the stale source through StreamingOriginRecenterCoordinator and the presentation
|
||||
// pipeline), clear it. Otherwise CurrCell
|
||||
// dangles on an orphaned cell and the dungeon-streaming gate — keyed on CurrCell — keeps
|
||||
// streaming collapsed onto the gone landblock, so the destination never streams in and
|
||||
// only the skybox renders. Clearing it lets the gate read "not in a dungeon" → the
|
||||
|
|
|
|||
|
|
@ -6,11 +6,10 @@ using DatEnvironment = DatReaderWriter.DBObjs.Environment;
|
|||
namespace AcDream.Core.World;
|
||||
|
||||
/// <summary>
|
||||
/// The parsed dat objects <c>ApplyLoadedTerrainLocked</c> needs, pre-read by the
|
||||
/// streaming worker under <c>_datLock</c> so the apply makes ZERO DatCollection
|
||||
/// calls and the update thread never blocks on the worker's lock (the FPS
|
||||
/// 30↔200 swing was that lock-wait). Keyed by the same dat id the apply would
|
||||
/// have passed to <c>_dats.Get<T></c>.
|
||||
/// Parsed DAT closure produced by <c>LandblockBuildFactory</c> under the shared
|
||||
/// reader gate and consumed by the render-thread presentation publishers.
|
||||
/// Publication makes zero DatCollection calls, so the update thread never
|
||||
/// blocks on worker DAT access. Entries retain their original DAT IDs.
|
||||
/// </summary>
|
||||
public sealed record PhysicsDatBundle(
|
||||
LandBlockInfo? Info,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue