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,
}