Editor/Pillar/ArchSpanExtentProvider.cs
namespace Sunless.Architecture;

public sealed class ArchSpanExtentProvider : IArchExtentProvider {
	public ArchKind Kind => ArchKind.Span;

	public ArchExtent Measure( object payload, ArchExtentContext context ) {
		var extent = new ArchExtent();

		if ( payload is not ArchSpanPart span
			|| !ArchSpanShape.Resolve( context.Plan, context.Kit, context.Room, span, out var run ) ) {
			return extent;
		}

		extent.Add( run.From, run.Springing, run.Top );
		extent.Add( run.To, run.Springing, run.Top );

		return extent.Grown( MathF.Max( 24f, run.Thickness ) );
	}
}