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>
29 lines
1.3 KiB
C#
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);
|
|
}
|