fix(streaming): preserve portal destination ownership

Detach old-world spatial ownership atomically, prioritize destination retirement dependencies, and reveal the viewport at the retail transition edge. Give private paperdoll views independent mesh ownership and retain dormant ACE entities so portal revisits preserve server objects without extending active GPU lifetimes.
This commit is contained in:
Erik 2026-07-25 08:35:12 +02:00
parent 2c848d4167
commit 823936ec31
57 changed files with 2551 additions and 324 deletions

View file

@ -3,11 +3,11 @@ using AcDream.App.World;
namespace AcDream.App.Streaming;
/// <summary>
/// Coordinates streaming-origin lifetime boundaries. Presentation must retire
/// the complete old window first; a teleport then changes
/// Coordinates streaming-origin lifetime boundaries. Spatial ownership must
/// detach the complete old window first; a teleport then changes
/// <see cref="LiveWorldOriginState"/> before destination streaming resumes,
/// while a session boundary releases the controller without recentering. The
/// transaction remains pending across frames when an owner teardown needs retry.
/// while deferred resource receipts continue under the shared frame budget.
/// A session boundary releases the controller without recentering.
/// </summary>
internal sealed class StreamingOriginRecenterCoordinator : IStreamingOriginConvergence
{
@ -72,9 +72,9 @@ internal sealed class StreamingOriginRecenterCoordinator : IStreamingOriginConve
}
/// <summary>
/// Observes retained presentation teardown and commits the new origin once
/// the streaming frame owner has converged it. Returns true only after the
/// destination streaming gate has been released.
/// Observes old-window spatial detachment and commits the new origin once
/// every detached owner has an exact retirement receipt. Returns true only
/// after the destination streaming gate has been released.
/// </summary>
public bool Advance()
{