Files

158 lines
9.8 KiB
C#
Raw Permalink Normal View History

2025-04-03 02:30:16 +08:00
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEditor;
using UnityEngine;
namespace AmplifyShaderEditor
{
public partial class Preferences
{
public enum ShowOption
{
Always = 0,
OnNewVersion = 1,
Never = 2
}
public class User
{
private class Styles
{
public static readonly GUIContent StartUp = new GUIContent( "Show start screen on Unity launch", "You can set if you want to see the start screen everytime Unity launchs, only just when there's a new version available or never." );
public static readonly GUIContent AlwaysSnapToGrid = new GUIContent( "Always Snap to Grid", "Always snap to grid when dragging nodes around, instead of using control." );
public static readonly GUIContent EnableUndo = new GUIContent( "Enable Undo (unstable)", "Enables undo for actions within the shader graph canvas. Currently unstable, use with caution." );
public static readonly GUIContent ClearLog = new GUIContent( "Clear Log on Update", "Clears the previously generated log each time the Update button is pressed." );
public static readonly GUIContent LogShaderCompile = new GUIContent( "Log Shader Compile", "Log message to console when a shader compilation is finished." );
public static readonly GUIContent LogBatchCompile = new GUIContent( "Log Batch Compile", "Log message to console when a batch compilation is finished." );
public static readonly GUIContent UpdateOnSceneSave = new GUIContent( "Update on Scene save (Ctrl+S)", "ASE is aware of Ctrl+S and will use it to save shader." );
public static readonly GUIContent DisablePreviews = new GUIContent( "Disable Node Previews", "Disable preview on nodes from being updated to boost up performance on large graphs." );
public static readonly GUIContent DisableMaterialMode = new GUIContent( "Disable Material Mode", "Disable enter Material Mode graph when double-clicking on material asset." );
public static readonly GUIContent ForceTemplateMinShaderModel = new GUIContent( "Force Template Min. Shader Model", "If active, when loading a shader its shader model will be replaced by the one specified in template if what is loaded is below the one set over the template." );
public static readonly GUIContent ForceTemplateInlineProperties = new GUIContent( "Force Template Inline Properties", "If active, defaults all inline properties to template values." );
}
private class Defaults
{
public const ShowOption StartUp = ShowOption.Always;
public const bool AlwaysSnapToGrid = true;
public const bool EnableUndo = false;
public const bool ClearLog = true;
public const bool LogShaderCompile = false;
public const bool LogBatchCompile = false;
public const bool UpdateOnSceneSave = true;
public const bool DisablePreviews = false;
public const bool DisableMaterialMode = false;
public const bool ForceTemplateMinShaderModel = true;
public const bool ForceTemplateInlineProperties = false;
}
// @diogo: make this private
public class Keys
{
public static string StartUp = "ASELastSession";
public static string AlwaysSnapToGrid = "ASEAlwaysSnapToGrid";
public static string EnableUndo = "ASEEnableUndo";
public static string ClearLog = "ASEClearLog";
public static string LogShaderCompile = "ASELogShaderCompile";
public static string LogBatchCompile = "ASELogBatchCompile";
public static string UpdateOnSceneSave = "ASEUpdateOnSceneSave";
public static string DisablePreviews = "ASEActivatePreviews";
public static string DisableMaterialMode = "ASEDisableMaterialMode";
public static string ForceTemplateMinShaderModel = "ASEForceTemplateMinShaderModel";
public static string ForceTemplateInlineProperties = "ASEForceTemplateInlineProperties";
}
public static ShowOption StartUp = Defaults.StartUp;
public static bool AlwaysSnapToGrid = Defaults.AlwaysSnapToGrid;
public static bool EnableUndo = Defaults.EnableUndo;
public static bool ClearLog = Defaults.ClearLog;
public static bool LogShaderCompile = Defaults.LogShaderCompile;
public static bool LogBatchCompile = Defaults.LogBatchCompile;
public static bool UpdateOnSceneSave = Defaults.UpdateOnSceneSave;
public static bool DisablePreviews = Defaults.DisablePreviews;
public static bool DisableMaterialMode = Defaults.DisableMaterialMode;
public static bool ForceTemplateMinShaderModel = Defaults.ForceTemplateMinShaderModel;
public static bool ForceTemplateInlineProperties = Defaults.ForceTemplateInlineProperties;
public static void ResetSettings()
{
EditorPrefs.DeleteKey( Keys.StartUp );
EditorPrefs.DeleteKey( Keys.AlwaysSnapToGrid );
EditorPrefs.DeleteKey( Keys.EnableUndo );
EditorPrefs.DeleteKey( Keys.ClearLog );
EditorPrefs.DeleteKey( Keys.LogShaderCompile );
EditorPrefs.DeleteKey( Keys.LogBatchCompile );
EditorPrefs.DeleteKey( Keys.UpdateOnSceneSave );
EditorPrefs.DeleteKey( Keys.DisablePreviews );
EditorPrefs.DeleteKey( Keys.DisableMaterialMode );
EditorPrefs.DeleteKey( Keys.ForceTemplateMinShaderModel );
EditorPrefs.DeleteKey( Keys.ForceTemplateInlineProperties );
StartUp = Defaults.StartUp;
AlwaysSnapToGrid = Defaults.AlwaysSnapToGrid;
EnableUndo = Defaults.EnableUndo;
ClearLog = Defaults.ClearLog;
LogShaderCompile = Defaults.LogShaderCompile;
LogBatchCompile = Defaults.LogBatchCompile;
UpdateOnSceneSave = Defaults.UpdateOnSceneSave;
DisablePreviews = Defaults.DisablePreviews;
DisableMaterialMode = Defaults.DisableMaterialMode;
ForceTemplateMinShaderModel = Defaults.ForceTemplateMinShaderModel;
ForceTemplateInlineProperties = Defaults.ForceTemplateInlineProperties;
}
public static void LoadSettings()
{
StartUp = ( ShowOption )EditorPrefs.GetInt( Keys.StartUp, ( int )Defaults.StartUp );
AlwaysSnapToGrid = EditorPrefs.GetBool( Keys.AlwaysSnapToGrid, Defaults.AlwaysSnapToGrid );
EnableUndo = EditorPrefs.GetBool( Keys.EnableUndo, Defaults.EnableUndo );
ClearLog = EditorPrefs.GetBool( Keys.ClearLog, Defaults.ClearLog );
LogShaderCompile = EditorPrefs.GetBool( Keys.LogShaderCompile, Defaults.LogShaderCompile );
LogBatchCompile = EditorPrefs.GetBool( Keys.LogBatchCompile, Defaults.LogBatchCompile );
UpdateOnSceneSave = EditorPrefs.GetBool( Keys.UpdateOnSceneSave, Defaults.UpdateOnSceneSave );
DisablePreviews = EditorPrefs.GetBool( Keys.DisablePreviews, Defaults.DisablePreviews );
DisableMaterialMode = EditorPrefs.GetBool( Keys.DisableMaterialMode, Defaults.DisableMaterialMode );
ForceTemplateMinShaderModel = EditorPrefs.GetBool( Keys.ForceTemplateMinShaderModel, Defaults.ForceTemplateMinShaderModel );
ForceTemplateInlineProperties = EditorPrefs.GetBool( Keys.ForceTemplateInlineProperties, Defaults.ForceTemplateInlineProperties );
}
public static void SaveSettings()
{
bool prevDisablePreviews = EditorPrefs.GetBool( Keys.DisablePreviews, false );
if ( DisablePreviews != prevDisablePreviews )
{
UIUtils.ActivatePreviews( !DisablePreviews );
}
EditorPrefs.SetInt( Keys.StartUp, ( int )StartUp );
EditorPrefs.SetBool( Keys.AlwaysSnapToGrid, AlwaysSnapToGrid );
EditorPrefs.SetBool( Keys.EnableUndo, EnableUndo );
EditorPrefs.SetBool( Keys.ClearLog, ClearLog );
EditorPrefs.SetBool( Keys.LogShaderCompile, LogShaderCompile );
EditorPrefs.SetBool( Keys.LogBatchCompile, LogBatchCompile );
EditorPrefs.SetBool( Keys.UpdateOnSceneSave, UpdateOnSceneSave );
EditorPrefs.SetBool( Keys.DisablePreviews, DisablePreviews );
EditorPrefs.SetBool( Keys.DisableMaterialMode, DisableMaterialMode );
EditorPrefs.SetBool( Keys.ForceTemplateMinShaderModel, ForceTemplateMinShaderModel );
EditorPrefs.SetBool( Keys.ForceTemplateInlineProperties, ForceTemplateInlineProperties );
}
public static void InspectorLayout()
{
StartUp = ( ShowOption )EditorGUILayout.EnumPopup( Styles.StartUp, StartUp );
AlwaysSnapToGrid = EditorGUILayout.Toggle( Styles.AlwaysSnapToGrid, AlwaysSnapToGrid );
EnableUndo = EditorGUILayout.Toggle( Styles.EnableUndo, EnableUndo );
ClearLog = EditorGUILayout.Toggle( Styles.ClearLog, ClearLog );
LogShaderCompile = EditorGUILayout.Toggle( Styles.LogShaderCompile, LogShaderCompile );
LogBatchCompile = EditorGUILayout.Toggle( Styles.LogBatchCompile, LogBatchCompile );
UpdateOnSceneSave = EditorGUILayout.Toggle( Styles.UpdateOnSceneSave, UpdateOnSceneSave );
DisablePreviews = EditorGUILayout.Toggle( Styles.DisablePreviews, DisablePreviews );
DisableMaterialMode = EditorGUILayout.Toggle( Styles.DisableMaterialMode, DisableMaterialMode );
ForceTemplateMinShaderModel = EditorGUILayout.Toggle( Styles.ForceTemplateMinShaderModel, ForceTemplateMinShaderModel );
ForceTemplateInlineProperties = EditorGUILayout.Toggle( Styles.ForceTemplateInlineProperties, ForceTemplateInlineProperties );
}
}
}
}