Editor/Walkway/ArchWalkwaySpan.cs
using System;
using System.Collections.Generic;
using System.Linq;
using Sandbox;
namespace Sunless.Architecture;
public sealed class ArchWalkwaySpan {
public Vector2 Min { get; init; }
public Vector2 Max { get; init; }
// The deck stops on the host wall's CENTRELINE while the slab runs on to its inner face, so the
// two extents are not the same rectangle and neither can be derived from the other after the fact.
public Vector2 DeckMin { get; init; }
public Vector2 DeckMax { get; init; }
public bool AlongX { get; init; }
public IReadOnlyList<(Vector2 From, Vector2 To)> Mouths { get; init; }
// The rooms the mouths cut, in mouth order - the far one may be a storey up.
public IReadOnlyList<ArchRoom> EndRooms { get; init; } = Array.Empty<ArchRoom>();
}