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

@ -297,4 +297,22 @@ public sealed class TargetManager
foreach (var voyeur in _voyeurTable.Values.ToList())
SendVoyeurUpdate(voyeur, _host.Position, status);
}
/// <summary>
/// Broadcasts a terminal availability event and drops the watched-role
/// subscriptions after delivery. Retail normally removes the object from
/// cell lookup before its watchers process the event; clearing the local
/// table explicitly preserves that lifecycle boundary when the App uses
/// the target fan-out as the temporary bridge for an unavailable object.
/// The object's own watcher role (<see cref="TargetInfo"/>) is untouched.
/// </summary>
public void NotifyVoyeurOfEventAndClear(TargetStatus status)
{
if (_voyeurTable == null)
return;
foreach (var voyeur in _voyeurTable.Values.ToList())
SendVoyeurUpdate(voyeur, _host.Position, status);
_voyeurTable.Clear();
}
}