fix(world): complete recall before teleport hide

Match retail's update ordering so object animation, particles, and scripts advance before inbound teleport state is applied. Separate input-originated movement from post-network autonomous position output, and reconcile presentation without a second physics tick so recall cannot resume after arrival.

Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-16 06:37:29 +02:00
parent dded9e6b17
commit 75acae02d6
13 changed files with 1068 additions and 332 deletions

View file

@ -312,6 +312,16 @@ a black alpha fade; both compose below retained UI, so
chat, panels, toolbar, cursor, and input remain live throughout travel. See
`docs/research/2026-07-15-retail-portal-space-pseudocode.md`.
The live frame barrier now also matches `SmartBox::UseTime`: local/remote
object, projectile, animation, final-pose, animation-hook, particle, and
owner-script work completes before the inbound network queue is dispatched.
Local movement/jump output is committed on that same pre-network side, while a
non-advancing post-network pass reconciles children and attached effect/light
anchors after authoritative root moves. This prevents ACE's teleport Hidden state
from freezing the final fraction of recall and replaying it after materialize,
without an arrival reset or Hidden-time animation exception. Automated recall
DAT conformance is green; destination-side visual confirmation remains.
---
#### (historical M1.5 working notes below)
@ -513,9 +523,9 @@ include dungeons.
zero-time recursive chains fail diagnostically while valid timed weather loops
continue. The
live-pose step now publishes exact root/indexed rigid-part transforms after
animation and equipped-child composition, then drains animation hooks,
PhysicsScripts, attached emitters/lights, and particle simulation in fixed
frame order. World-released particles remain at their birth positions while
animation and equipped-child composition, advances existing FP hooks, drains
animation hooks, refreshes attached emitters/lights, advances particles, then
ticks PhysicsScripts in fixed retail frame order. World-released particles remain at their birth positions while
parent-local particles follow; normal/blocking/anonymous logical emitter
semantics are exact; pending projections skip particle updates/draw while
retaining absolute creation times, the same emitter, and its logical ID, so