Interface and static accessor for arch host carving logic. Defines IArchHostCarving with methods to produce mouth outlines and carve volumes, and ArchHostCarvings that resolves a single implementation via ArchRoles.One<T>() and forwards calls, returning empty enumerables if none.
namespace Sunless.Architecture;
public interface IArchHostCarving
{
IEnumerable<List<Vector2>> Mouths( IArchCarveHost host, object payload, ArchBuilding building, ArchKit kit );
IEnumerable<ArchCarveVolume> Volumes( IArchCarveHost host, object payload, ArchBuilding building, ArchKit kit );
}
public static class ArchHostCarvings
{
static IArchHostCarving Load() => ArchRoles.One<IArchHostCarving>();
public static IEnumerable<List<Vector2>> Mouths( IArchCarveHost host, object payload, ArchBuilding building, ArchKit kit )
{
return Load()?.Mouths( host, payload, building, kit ) ?? Enumerable.Empty<List<Vector2>>();
}
public static IEnumerable<ArchCarveVolume> Volumes( IArchCarveHost host, object payload, ArchBuilding building, ArchKit kit )
{
return Load()?.Volumes( host, payload, building, kit ) ?? Enumerable.Empty<ArchCarveVolume>();
}
}