feat(vfx): decode retail hooks and typed tables
Replace the incomplete package path with one DatCollection-backed compatibility seam for PhysicsScripts and Animations. Preserve CreateBlockingParticle's inherited payload and following cursor, route every production and audit consumer through the corrected loaders, and apply retail's post-UnPack StartTime ordering. Add exact stored-order PhysicsScriptTable upper-threshold resolution, high-byte DID and embedded-ID validation, plus live effect profiles with Setup-to-PhysicsDesc precedence across top-level and attached entity lifetimes. Keep blocking execution deferred and narrow TS-11 accordingly. Pin synthetic malformed/cursor/order fixtures, installed-DAT blocking and recall audits, high-index IDs, IEEE boundaries, profile teardown, and ordinary decoder parity; synchronize architecture, inventory, milestones, roadmap, research, and memory. Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
parent
8dd996053d
commit
363e046112
31 changed files with 1102 additions and 73 deletions
|
|
@ -258,7 +258,9 @@ Ownership by phase:
|
|||
`LiveEntityRuntime` is now the shipped bridge to this target. It owns one
|
||||
`LiveEntityRecord` per accepted server-object incarnation, ServerGuid-to-local-id
|
||||
translation, accepted snapshots/timestamp gates, animation and remote-motion
|
||||
components, parent-event state, and exact logical teardown. `GpuWorldState`
|
||||
components, parent-event state, effect-profile defaults, and exact logical
|
||||
teardown. Live `PhysicsDesc` effect fields replace Setup defaults on that same
|
||||
record; rebucketing never recreates them. `GpuWorldState`
|
||||
owns spatial buckets only: register/rebucket/unregister are separate operations,
|
||||
and landblock reloads reuse the same `WorldEntity` without replaying renderer or
|
||||
script creation. Its canonical materialized view remains stable across pending
|
||||
|
|
@ -267,6 +269,14 @@ targeting. Pickup/parent leave-world clears cell membership and pauses root
|
|||
movement/animation without destroying retained owners. `GameWindow` retains
|
||||
storage-free typed views while its large feature loops are extracted.
|
||||
|
||||
DAT decoding for runtime VFX crosses one narrow `AcDream.Content.Vfx` seam.
|
||||
`RetailAnimationLoader` and `RetailPhysicsScriptLoader` still read through the
|
||||
single shared `DatCollection`, delegate ordinary animation-hook schemas to
|
||||
Chorizite.DatReaderWriter, and replace only its incomplete
|
||||
`CreateBlockingParticleHook` model with retail's inherited CreateParticle
|
||||
payload. Core consumes the loaders through delegates/interfaces and therefore
|
||||
does not depend on Content or a database implementation.
|
||||
|
||||
The remaining aggregation is primarily `_playerController`'s player-specific
|
||||
movement plus the separate `WorldEntity`/animation/physics component types.
|
||||
Those should become ONE class:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue