Editor/SeamlessToolSettings.cs
using Sandbox;

public class SeamlessToolSettings
{
	public SeamlessProcessingMode ProcessingMode { get; set; } = SeamlessProcessingMode.OffsetBlend;
	public SeamlessSeamShape SeamShape { get; set; } = SeamlessSeamShape.Smooth;
	public SeamlessVariationPreset VariationPreset { get; set; } = SeamlessVariationPreset.Balanced;
	public SeamlessPatchShape PatchShape { get; set; } = SeamlessPatchShape.Circle;
	public SeamlessBrickTilePattern BrickTilePattern { get; set; } = SeamlessBrickTilePattern.RunningBrick;

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

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

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

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

	public int RandomSeed { get; set; } = 12345;

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

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

	[Range( 2f, 512f )]
	public int PatchCount { get; set; } = 18;

	[Range( 8f, 512f )]
	public float PatchSize { get; set; } = 96f;

	[Range( 0.05f, 1f )]
	public float MaskSoftness { get; set; } = 0.45f;

	[Range( 0.1f, 4f )]
	public float TextureBombDensity { get; set; } = 1f;

	[Range( 4f, 4096f )]
	public float BrickTileCellWidth { get; set; } = 128f;

	[Range( 4f, 4096f )]
	public float BrickTileCellHeight { get; set; } = 64f;

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

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

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

	[Range( 2f, 8f )]
	public int PreviewTileCount { get; set; } = 3;

	[Range( 1f, 100f )]
	public int ExportQuality { get; set; } = 90;

	public SeamlessPreviewMode PreviewMode { get; set; } = SeamlessPreviewMode.Processed;
	public SeamlessExportFormat ExportFormat { get; set; } = SeamlessExportFormat.Png;
	public string OutputSuffix { get; set; } = "_seamless";
	public string OutputFolder { get; set; } = "";
	public bool OverwriteExisting { get; set; }
	public bool ExportVMAT { get; set; }
	public bool AutoProcess { get; set; } = true;
}