feat(vfx): bind effects to live animated poses
This commit is contained in:
parent
96ddfdf175
commit
542dcfc384
41 changed files with 3246 additions and 741 deletions
|
|
@ -291,9 +291,30 @@ serial FIFO per owner: duplicate plays append, owners progress independently,
|
|||
not advance; a new play for an already-created cell-less object is dropped as in
|
||||
retail. Attached children advance through their eligible parent. Every effect
|
||||
resource uses the canonical, globally unique `WorldEntity.Id`; static
|
||||
allocators fail before their namespace can wrap. Live anchors are refreshed from the current
|
||||
`WorldEntity` before script dispatch; Step 5 extends that root pose to exact
|
||||
animated part transforms for emitters and dynamic lights.
|
||||
allocators fail before their namespace can wrap. `EntityEffectPoseRegistry`
|
||||
publishes the final root and indexed rigid animated-part transforms after animation
|
||||
and equipped-child composition. Animation hooks are captured during sequence
|
||||
advance and drained only after those poses are current; PhysicsScripts then run,
|
||||
attached emitters and object lights refresh, and particle simulation advances.
|
||||
World-released particles retain their birth positions and parent-local particles
|
||||
follow their current owner while in-world. Pending spatial projections skip
|
||||
particle updates and drawing exactly like retail's cell-less object gate without
|
||||
ending emitter state or identity; absolute creation timestamps remain unchanged,
|
||||
so elapsed particles/durations expire on re-entry without a backlog burst. Their
|
||||
anchors may still accept authoritative pose correction before that update.
|
||||
Missing emitter DAT records fail diagnostically
|
||||
without a synthesized effect. `LiveEntityLightController` keeps live light
|
||||
projection/re-entry outside `GameWindow`; `LightingHookSink` remains the Core
|
||||
hook and per-frame pose consumer. It also owns retail's Lighting-bit/
|
||||
`SetLightHook` latch so spatial withdrawal preserves logical state while a
|
||||
true state transition creates or destroys the Setup lights. Stable indexed
|
||||
poses exclude Setup visual scale and remain separate from drawable `MeshRefs`.
|
||||
Light registration follows final runtime visibility edges; equipped-child
|
||||
updates are parent-before-child with retained per-child buffers and cascade
|
||||
withdrawal when an ancestor pose disappears. A later pose publication drains
|
||||
the waiting attachment graph transitively, so A→B→C recovers B before C in the
|
||||
same parent-first pass. Recovery is edge-triggered by object/appearance/pose
|
||||
publication; permanent missing DAT or holding parts are never polled per frame.
|
||||
|
||||
The remaining aggregation is primarily `_playerController`'s player-specific
|
||||
movement plus the separate `WorldEntity`/animation/physics component types.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue