Editor/Span/ArchSpanExtentProvider.cs

An editor-only provider that implements IArchExtentProvider for 'Span' architecture parts. It measures spatial extent by resolving an ArchSpanPart into a run and adding its endpoints to an ArchExtent, then growing the extent by the larger of 24 or the run thickness.

File Access
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 ) );
	}
}