acdream/src/AcDream.Core/World/LandblockCollisionBuild.cs
Erik d9446030e6 feat(streaming): shadow-publish flat collision assets
Carry one immutable prepared collision closure with each accepted near-tier generation and install graph plus flat views through the same retained publication receipt. Apply the same strict package-only rule to live entities, add exact sampled graph-authoritative comparison artifacts and lifecycle counters, and prove cancellation, demotion, rehydrate, revisit, teardown, reconnect, and the nine-stop route with 14,064 zero-mismatch samples.

Co-authored-by: OpenAI Codex <codex@openai.com>
2026-07-25 16:38:54 +02:00

29 lines
1.3 KiB
C#

using System.Collections.Immutable;
using AcDream.Core.Physics;
namespace AcDream.Core.World;
/// <summary>
/// Immutable prepared-collision closure carried by one near-tier landblock
/// build. Keys remain the original DAT source IDs. Cell-structure geometry and
/// per-EnvCell topology stay separate so package aliases retain one reusable
/// geometry identity without conflating cell placement or portal state.
/// </summary>
public sealed record LandblockCollisionBuild(
ImmutableDictionary<uint, FlatGfxObjCollisionAsset> GfxObjs,
ImmutableDictionary<uint, FlatSetupCollision> Setups,
ImmutableDictionary<uint, FlatCellStructureCollisionAsset> CellStructures,
ImmutableDictionary<uint, FlatEnvCellTopology> EnvCells,
ImmutableArray<uint> GfxObjIds,
ImmutableArray<uint> SetupIds,
ImmutableArray<uint> EnvCellIds)
{
public static readonly LandblockCollisionBuild Empty = new(
ImmutableDictionary<uint, FlatGfxObjCollisionAsset>.Empty,
ImmutableDictionary<uint, FlatSetupCollision>.Empty,
ImmutableDictionary<uint, FlatCellStructureCollisionAsset>.Empty,
ImmutableDictionary<uint, FlatEnvCellTopology>.Empty,
ImmutableArray<uint>.Empty,
ImmutableArray<uint>.Empty,
ImmutableArray<uint>.Empty);
}