TerrainBrushSettings.cs
// Copyright (c) 2026 SubZero Studios LLC. All rights reserved.

using Sandbox;

namespace SubZero.SubTerrain;

public sealed class CraterBrushSettings
{
	[Property, Range( 16f, 200f )]
	public float MaxDepth { get; set; } = 96f;

	[Property, Title( "Depth Scale" ), Range( 0.1f, 1.5f )]
	public float DepthScale { get; set; } = 0.5f;

	[Property, Range( 0f, 32f )]
	public float MaxRaise { get; set; } = 12f;

	[Property, Range( 0.4f, 0.95f )]
	public float BowlRadius { get; set; } = 0.75f;

	[Property, Range( 0f, 0.7f )]
	public float Irregularity { get; set; } = 0.35f;

	[Property, Range( 0f, 0.5f )]
	public float Stretch { get; set; } = 0.25f;

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

public sealed class DigBrushSettings
{
	[Property, Range( 16f, 120f )]
	public float MaxDepth { get; set; } = 48f;

	[Property, Title( "Depth Scale" ), Range( 0.1f, 1.5f )]
	public float DepthScale { get; set; } = 0.85f;

	[Property, Range( 0f, 40f )]
	public float MaxRaise { get; set; } = 18f;

	[Property, Range( 0.7f, 0.98f )]
	public float BowlRadius { get; set; } = 0.9f;

	[Property, Range( 0f, 0.4f )]
	public float Irregularity { get; set; } = 0.12f;

	[Property, Range( 0f, 0.35f )]
	public float Stretch { get; set; } = 0.08f;

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

public sealed class FlattenBrushSettings
{
	[Property, Range( 0.05f, 1f )]
	public float Strength { get; set; } = 0.65f;

	[Property, Range( 4f, 64f )]
	public float MaxDelta { get; set; } = 24f;
}