Editor/PbrGeneratorSettings.cs
using Sandbox;

public sealed class PbrGeneratorSettings
{
	[Range( 0f, 4f )]
	public float HeightStrength { get; set; } = 1.0f;

	[Range( 0f, 3f )]
	public float HeightContrast { get; set; } = 1.0f;

	[Range( 0f, 1f )]
	public float HeightBlackPoint { get; set; } = 0.0f;

	[Range( 0f, 1f )]
	public float HeightWhitePoint { get; set; } = 1.0f;

	[Range( 0f, 1f )]
	public float HeightMidpoint { get; set; } = 0.5f;

	[Range( 0f, 1f )]
	public float HeightCavityEmphasis { get; set; } = 0.0f;

	[Range( 0f, 16f )]
	public float HeightBlur { get; set; } = 1.0f;

	public bool InvertHeight { get; set; }

	public bool AdvancedHeightEnabled { get; set; }

	[Range( 0f, 4f )]
	public float AdvancedHeightFineStrength { get; set; } = 0.8f;

	[Range( 0f, 4f )]
	public float AdvancedHeightMediumStrength { get; set; } = 0.65f;

	[Range( 0f, 4f )]
	public float AdvancedHeightLargeStrength { get; set; } = 0.45f;

	[Range( 0f, 4f )]
	public float AdvancedHeightBroadStrength { get; set; } = 0.25f;

	[Range( 1f, 8f )]
	public float AdvancedHeightScaleRadius { get; set; } = 2.0f;

	[Range( 0f, 3f )]
	public float AdvancedHeightFinalContrast { get; set; } = 1.0f;

	[Range( -1f, 1f )]
	public float AdvancedHeightBias { get; set; } = 0.0f;

	[Range( 0f, 4f )]
	public float AdvancedHeightGain { get; set; } = 1.0f;

	[Range( 0f, 16f )]
	public float AdvancedHeightSmoothing { get; set; } = 1.0f;

	[Range( 0f, 12f )]
	public float NormalStrength { get; set; } = 4.0f;

	[Range( 0f, 8f )]
	public float NormalSmoothing { get; set; } = 0.0f;

	public bool FlipNormalY { get; set; }

	[Range( 0f, 1f )]
	public float RoughnessBase { get; set; } = 0.65f;

	[Range( 0f, 1f )]
	public float RoughnessContrast { get; set; } = 0.25f;

	[Range( 0f, 1f )]
	public float RoughnessBlackPoint { get; set; } = 0.0f;

	[Range( 0f, 1f )]
	public float RoughnessWhitePoint { get; set; } = 1.0f;

	[Range( 0f, 1f )]
	public float RoughnessCavity { get; set; } = 0.0f;

	[Range( 0f, 1f )]
	public float RoughnessVariation { get; set; } = 0.0f;

	public bool InvertRoughness { get; set; }

	[Range( 0f, 2f )]
	public float AoStrength { get; set; } = 0.5f;

	[Range( 1f, 32f )]
	public float AoRadius { get; set; } = 6.0f;

	[Range( 0f, 1f )]
	public float AoMinimum { get; set; } = 0.35f;

	[Range( 0f, 1f )]
	public float MetallicValue { get; set; } = 0.0f;

	public bool OverwriteExisting { get; set; }
}