Editor/PbrGeneratorPreferences.cs
using System;
using Sandbox;
public sealed class PbrGeneratorPreferences
{
private const string CookieKey = "SeamLess.PbrGenerator.Preferences.v1";
public string OutputFolder { get; set; } = "";
public bool OutputFolderFollowsSource { get; set; } = true;
public PbrMapType SelectedMap { get; set; } = PbrMapType.Albedo;
public PbrPreviewLayout PreviewLayout { get; set; } = PbrPreviewLayout.Atlas;
public PbrPreviewShape PreviewShape { get; set; } = PbrPreviewShape.Sphere;
public bool ExperimentalMaterialPreviewEnabled { get; set; }
public bool AutoRefreshMaterialPreview { get; set; }
public bool ParallaxMaterialPreviewEnabled { get; set; }
public static PbrGeneratorPreferences Load()
{
try
{
var preferences = ProjectCookie.Get( CookieKey, new PbrGeneratorPreferences() ) ?? new PbrGeneratorPreferences();
preferences.ClampValues();
return preferences;
}
catch ( Exception ex )
{
Log.Info( $"Seam-Less PBR: Could not load saved preferences: {ex.Message}" );
return new PbrGeneratorPreferences();
}
}
public static void Save( PbrGeneratorPreferences preferences )
{
if ( preferences == null )
return;
try
{
preferences.ClampValues();
ProjectCookie.Set( CookieKey, preferences );
}
catch ( Exception ex )
{
Log.Info( $"Seam-Less PBR: Could not save preferences: {ex.Message}" );
}
}
private void ClampValues()
{
OutputFolder ??= "";
if ( OutputFolderFollowsSource )
OutputFolder = "";
if ( !Enum.IsDefined( typeof( PbrMapType ), SelectedMap ) )
SelectedMap = PbrMapType.Albedo;
if ( !Enum.IsDefined( typeof( PbrPreviewLayout ), PreviewLayout ) )
PreviewLayout = PbrPreviewLayout.Atlas;
if ( !Enum.IsDefined( typeof( PbrPreviewShape ), PreviewShape ) )
PreviewShape = PbrPreviewShape.Sphere;
}
}