Editor/Pipe/ArchPipeExtentProviders.cs
namespace Sunless.Architecture;
public sealed class ArchPipeExtentProvider : IArchExtentProvider {
public ArchKind Kind => ArchKind.Pipe;
public ArchExtent Measure( object payload, ArchExtentContext context ) {
if ( payload is not ArchPipePart run ) {
return new ArchExtent();
}
var extent = new ArchExtent();
foreach ( var point in ArchPipeShape.Resolve( context.Plan, run ).Path() ) {
extent.Add( point );
}
return extent.Grown( MathF.Max( 2f, run.Radius ) );
}
}
public sealed class ArchBracketExtentProvider : IArchExtentProvider {
public ArchKind Kind => ArchKind.Bracket;
public ArchExtent Measure( object payload, ArchExtentContext context ) {
if ( payload is not ArchPipeBracketPart bracket ) {
return new ArchExtent();
}
var extent = new ArchExtent();
foreach ( var corner in bracket.Outline() ) {
extent.Add( corner, bracket.BaseHeight, bracket.TopHeight );
}
return extent.Grown( MathF.Max( 2f, bracket.MemberWidth ) );
}
}