acdream/src/AcDream.App/Streaming
Erik 08e309c357 fix(streaming): relocate player entity to current landblock every frame
TWO root causes for "character disappears when walking far":

1. MarkPersistent stored SERVER GUID but RemoveLandblock checked LOCAL
   entity.Id — different namespaces, never matched. Fixed by adding
   WorldEntity.ServerGuid field and checking it in RemoveLandblock.

2. Even with rescue working, the player entity stays in its SPAWN
   landblock's entity list forever. When the player walks to a new
   landblock and the spawn landblock gets frustum-culled, the entity
   disappears because neverCullLandblockId is computed from the
   player's current position (new landblock) but the entity is stored
   in the old landblock.

   Fixed by calling GpuWorldState.RelocateEntity every frame in the
   player-mode update loop. This moves the entity from whatever
   landblock it's currently in to the one matching its actual position.
   The scan is O(entities) but only runs for one entity per frame.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 15:28:32 +02:00
..
GpuWorldState.cs fix(streaming): relocate player entity to current landblock every frame 2026-04-13 15:28:32 +02:00
LandblockStreamer.cs fix(app): Phase A.1 — make LandblockStreamer synchronous (DatCollection isn't thread-safe) 2026-04-11 22:56:19 +02:00
LandblockStreamJob.cs fix(app): Phase A.1 — LandblockStreamer lifecycle + threading hardening 2026-04-11 22:20:41 +02:00
StreamingController.cs feat(app): Phase B.3 — wire PhysicsEngine into streaming pipeline 2026-04-12 09:58:07 +02:00
StreamingRegion.cs fix(app): Phase A.1 — encode landblock IDs with 0xFFFF terminator, not 0xFFFE 2026-04-11 22:59:21 +02:00