Editor/Stair/ArchStairHostCarving.cs
namespace Sunless.Architecture;

public sealed class ArchStairHostCarving : IArchHostCarving {
	public IEnumerable<List<Vector2>> Mouths( IArchCarveHost host, object payload, ArchBuilding building, ArchKit kit ) {
		if ( payload is not ArchStairPart stair ) {
			return Enumerable.Empty<List<Vector2>>();
		}

		return ArchStairCarve.Resolve( host, stair, building, kit ).Runs
			.Where( run => run.Last )
			.Select( run => run.Axes.Rect( run.Length - run.Going * 2f, run.Length + run.Going * 0.5f,
				-ArchProbe.Step, run.Width + ArchProbe.Step ) );
	}

	public IEnumerable<ArchCarveVolume> Volumes( IArchCarveHost host, object payload, ArchBuilding building, ArchKit kit ) {
		return payload is ArchStairPart stair
			? ArchStairCarve.Volumes( host, stair, building, kit )
			: Enumerable.Empty<ArchCarveVolume>();
	}
}