fix(teleport): preserve dungeon cell identity on respawn (#215)
Classify teleport landblock transitions from the source and destination Position cell IDs instead of render-space coordinates. This keeps same-dungeon death respawns on their resident floor physics while preserving the existing true cross-landblock streaming path. Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
parent
b0c175afc0
commit
0ad6700a07
7 changed files with 296 additions and 9 deletions
|
|
@ -412,6 +412,24 @@ replace state produced by another job. CPU mesh extraction may still be schedule
|
|||
onto `ObjectMeshManager`'s thread-safe work queue, but the worker never publishes
|
||||
partially hydrated cell membership or shell placement to the renderer.
|
||||
|
||||
### Teleport cell identity at the streaming boundary
|
||||
|
||||
The network and physics layers carry retail's complete `Position`: an
|
||||
authoritative `objcell_id` plus a frame. Any streaming decision that asks
|
||||
whether a teleport crossed a landblock compares the source and destination cell
|
||||
IDs. It must never reconstruct either landblock by flooring render/world XYZ.
|
||||
Dungeon EnvCells have arbitrary frame origins, including valid negative local
|
||||
coordinates, so XYZ-to-grid inference can evict the landblock the player is
|
||||
still standing in.
|
||||
|
||||
`TeleportLandblockTransition` owns this App-layer classification. When the
|
||||
source cell is unavailable before first placement, it uses the typed current
|
||||
streaming-center landblock as the fallback identity. The existing async
|
||||
recenter/hydration path runs only for a real cell-ID landblock change; a
|
||||
same-landblock teleport keeps the already-published render and physics unit.
|
||||
This is the asynchronous adapter for retail's direct full-`Position` placement
|
||||
(`SmartBox::TeleportPlayer @ 0x00453910`).
|
||||
|
||||
## Roadmap Model
|
||||
|
||||
The old R1-R8 architecture sequence was a useful early refactor sketch, but it
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue