feat(vfx): port retail hidden and teleport presentation

Preserve canonical live-object ownership across Hidden transitions and remote teleport placement so effects, collision, streaming, and targeting remain synchronized.
This commit is contained in:
Erik 2026-07-14 14:59:48 +02:00
parent a51ebc66e9
commit 1e98d81448
46 changed files with 4883 additions and 127 deletions

View file

@ -30,6 +30,22 @@ public sealed class WorldEntity
/// </summary>
public required IReadOnlyList<MeshRef> MeshRefs { get; set; }
/// <summary>
/// Whether the root PartArray participates in mesh drawing. Live-object
/// PhysicsState NoDraw/Hidden transitions change this without destroying
/// the entity or its scripts, particles, lights, cell identity, or cached
/// mesh resources. Dat/static entities remain visible by default.
/// </summary>
public bool IsDrawVisible { get; set; } = true;
/// <summary>
/// Retained-tree visibility inherited from attached ancestors. Retail
/// draws child physics objects through their parent hierarchy; acdream
/// flattens them into independent draw entries, so this separate bit keeps
/// ancestor suppression out of the child's own PhysicsState.
/// </summary>
public bool IsAncestorDrawVisible { get; set; } = true;
/// <summary>
/// Stable Setup-part-indexed poses used by attachment and effect hooks.
/// Unlike <see cref="MeshRefs"/>, this array never compacts around a DAT