Editor class that implements IArchHostCarving for stair parts. It computes mouth outlines and carve volumes by resolving stair carve runs and transforming them into rectangular axes for carving and delegates volume generation to ArchStairCarve.
namespace Sunless.Architecture;
public sealed class ArchStairHostCarving : IArchHostCarving
{
public IEnumerable<List<Vector2>> Mouths( IArchCarveHost host, object payload, ArchBuilding building, ArchKit kit )
{
if ( payload is not ArchStairPart stair )
{
return Enumerable.Empty<List<Vector2>>();
}
return ArchStairCarve.Resolve( host, stair, building, kit ).Runs
.Where( run => run.Last )
.Select( run => run.Axes.Rect( run.Length - run.Going * 2f, run.Length + run.Going * 0.5f,
-ArchProbe.Step, run.Width + ArchProbe.Step ) );
}
public IEnumerable<ArchCarveVolume> Volumes( IArchCarveHost host, object payload, ArchBuilding building, ArchKit kit )
{
return payload is ArchStairPart stair
? ArchStairCarve.Volumes( host, stair, building, kit )
: Enumerable.Empty<ArchCarveVolume>();
}
}