Settings classes for the Advanced Mapping Tools architecture generators. Defines a StructureDetail enum plus property groups for water tower legs, ladder and balcony, and fire escape railing and ladder options.
namespace AdvancedMappingTools;
public enum StructureDetail
{
Low,
Standard,
High
}
public sealed partial class WaterTowerSettings
{
[Property, Group( "Detail" ), WideMode]
public StructureDetail DetailLevel { get; set; } = StructureDetail.Standard;
[Property, Group( "Structure" ), Title( "Leg Thickness Multiplier" ), Range( .25f, 2, slider: false ), WideMode]
public float LegThickness { get; set; } = 1;
[Property, Group( "Ladder" ), Title( "Ladder Rotation" ), Range( -180, 180, slider: false ), WideMode]
public float LadderAngle { get; set; }
[Property, Group( "Balcony" ), Title( "Walkway Width" ), Range( 4, 64, slider: false ), WideMode]
public float WalkwayWidth { get; set; } = 22;
[Property, Group( "Balcony" ), Title( "Railing Height" ), Range( 12, 96, slider: false ), WideMode]
public float WalkwayRailHeight { get; set; } = 40;
}
public sealed partial class FireEscapeSettings
{
[Property, Group( "Detail" ), WideMode]
public StructureDetail DetailLevel { get; set; } = StructureDetail.Standard;
[Property, Group( "Railing" ), Range( .25f, 1.5f, slider: false ), WideMode]
public float BalusterThickness { get; set; } = .6f;
[Property, Group( "Railing" ), Range( 5, 24, slider: false ), WideMode]
public float BalusterSpacing { get; set; } = 5;
[Property, Group( "Ladder" ), Title( "Hanging Ladder Offset" ), Range( -128, 128, slider: false ), WideMode]
public float LadderOffset { get; set; }
public float LadderAt => Math.Clamp( LadderOffset, -MathF.Max( PlatformWidth * .5f - 12, 0 ), MathF.Max( PlatformWidth * .5f - 12, 0 ) );
}