using AcDream.Core.World; namespace AcDream.App.Streaming; /// /// Immutable context retained after a landblock's spatial/world-state /// membership has been detached. Presentation owners consume this snapshot /// asynchronously from the state transition, so a failed renderer cleanup /// cannot keep the old landblock logically resident. /// public sealed record GpuLandblockRetirement( uint LandblockId, LandblockRetirementKind Kind, IReadOnlyList Entities); /// /// Exact result of the atomic spatial-generation swap used before a shared /// world-origin recenter. Spatial membership is already unreachable when this /// value returns; the retained per-landblock receipts let presentation owners /// retire their resources later under the ordinary frame budget. /// internal sealed record GpuWorldRecenterRetirement( IReadOnlyList Landblocks, int SpatialOperationCount, Exception? ObserverFailure); public enum LandblockRetirementKind { Full, NearLayer, }