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.
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 ) );
}
}