Editor UI/renderer component for architecture spans. Implements IArchDrawer and draws an ArchSpanPart into the host canvas by resolving the span shape and invoking ArchSpanGen.Build with a brush chosen from span/room/building palettes.
namespace Sunless.Architecture;
public sealed class ArchSpanDrawer : IArchDrawer
{
public string Draws => ArchDraws.Span;
// The solid goes on the HOST canvas rather than into a named piece: a span is nothing but its span, and the
// build cache reads a part whose host canvas came out empty as one that vanished.
public void Draw( ArchDrawing drawing )
{
var span = drawing.Drawn<ArchSpanPart>();
var room = drawing.Within<ArchRoom>();
var building = drawing.Within<ArchBuilding>();
if ( building is null || !ArchSpanShape.Resolve( drawing.Plan, drawing.Kit, room, span, out var run ) )
{
return;
}
var chain = new[] { span.Palette, room.Palette, building.Palette };
ArchSpanGen.Build( drawing.Canvas, run, drawing.Style.Brush( ArchSurface.PillarCap, chain ) );
}
}