summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeUtils.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeUtils.cs')
-rw-r--r--Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeUtils.cs293
1 files changed, 293 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeUtils.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeUtils.cs
new file mode 100644
index 00000000..81219dd4
--- /dev/null
+++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/NodeUtils.cs
@@ -0,0 +1,293 @@
+// Amplify Shader Editor - Visual Shader Editing Tool
+// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
+
+using UnityEngine;
+using UnityEditor;
+
+namespace AmplifyShaderEditor
+{
+ public class NodeUtils
+ {
+
+ public delegate void DrawPropertySection();
+
+ public static void DrawPropertyGroup( string sectionName, DrawPropertySection DrawSection )
+ {
+ Color cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, 0.5f );
+ EditorGUILayout.BeginHorizontal( UIUtils.MenuItemToolbarStyle );
+ GUI.color = cachedColor;
+
+ GUILayout.Label( sectionName, UIUtils.MenuItemToggleStyle );
+
+ EditorGUILayout.EndHorizontal();
+
+
+ cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, ( EditorGUIUtility.isProSkin ? 0.5f : 0.25f ) );
+ EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle );
+ GUI.color = cachedColor;
+ DrawSection();
+ EditorGUILayout.Separator();
+ EditorGUILayout.EndVertical();
+ }
+
+
+ public static void DrawNestedPropertyGroup( ref bool foldoutValue, string sectionName, DrawPropertySection DrawSection, int horizontalSpacing = 15 )
+ {
+ GUILayout.BeginHorizontal();
+ {
+ GUILayout.Space( horizontalSpacing );
+ EditorGUILayout.BeginVertical( EditorStyles.helpBox );
+ {
+ Color cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, 0.5f );
+ EditorGUILayout.BeginHorizontal();
+ {
+ GUI.color = cachedColor;
+ bool value = GUILayout.Toggle( foldoutValue, sectionName, UIUtils.MenuItemToggleStyle );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ foldoutValue = value;
+ }
+ }
+ EditorGUILayout.EndHorizontal();
+ EditorGUI.indentLevel--;
+ if( foldoutValue )
+ {
+ cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, ( EditorGUIUtility.isProSkin ? 0.5f : 0.25f ) );
+ {
+ EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle );
+ {
+ GUI.color = cachedColor;
+ DrawSection();
+ }
+ EditorGUILayout.EndVertical();
+ EditorGUILayout.Separator();
+ }
+ }
+ EditorGUI.indentLevel++;
+ }
+ EditorGUILayout.EndVertical();
+ }
+ GUILayout.EndHorizontal();
+ }
+
+ public static void DrawNestedPropertyGroup( ref bool foldoutValue, Rect rect, string sectionName, DrawPropertySection DrawSection, int horizontalSpacing = 15 )
+ {
+ var box = rect;
+ box.height -= 2;
+ GUI.Label( box, string.Empty, EditorStyles.helpBox );
+
+ var tog = rect;
+#if UNITY_2019_3_OR_NEWER
+ tog.y -= ( tog.height - ( EditorGUIUtility.singleLineHeight + 5 ) ) * 0.5f;
+#endif
+ tog.xMin += 2;
+ tog.xMax -= 2;
+ tog.yMin += 2;
+ bool value = GUI.Toggle( tog, foldoutValue, sectionName, UIUtils.MenuItemToggleStyle );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ foldoutValue = value;
+ }
+
+ if( foldoutValue )
+ {
+ DrawSection();
+ }
+ }
+
+
+ public static void DrawNestedPropertyGroup( ref bool foldoutValue, string sectionName, DrawPropertySection DrawSection, DrawPropertySection HeaderSection )
+ {
+ GUILayout.BeginHorizontal();
+ {
+ GUILayout.Space( 15 );
+ EditorGUILayout.BeginVertical( EditorStyles.helpBox );
+ Color cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, 0.5f );
+ EditorGUILayout.BeginHorizontal();
+ GUI.color = cachedColor;
+
+ bool value = GUILayout.Toggle( foldoutValue, sectionName, UIUtils.MenuItemToggleStyle );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ foldoutValue = value;
+ }
+ HeaderSection();
+ EditorGUILayout.EndHorizontal();
+ EditorGUI.indentLevel--;
+ if( foldoutValue )
+ {
+ cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, ( EditorGUIUtility.isProSkin ? 0.5f : 0.25f ) );
+ EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle );
+ GUI.color = cachedColor;
+ DrawSection();
+ EditorGUILayout.EndVertical();
+ EditorGUILayout.Separator();
+ }
+ EditorGUI.indentLevel++;
+ EditorGUILayout.EndVertical();
+ }
+ GUILayout.EndHorizontal();
+ }
+
+ public static void DrawNestedPropertyGroup( UndoParentNode owner, ref bool foldoutValue, ref bool enabledValue, string sectionName, DrawPropertySection DrawSection )
+ {
+ GUILayout.BeginHorizontal();
+ {
+ GUILayout.Space( 15 );
+ EditorGUILayout.BeginVertical( EditorStyles.helpBox );
+ Color cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, 0.5f );
+ EditorGUILayout.BeginHorizontal();
+ GUI.color = cachedColor;
+
+ bool value = GUILayout.Toggle( foldoutValue, sectionName, UIUtils.MenuItemToggleStyle );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ foldoutValue = value;
+ }
+
+ value = ( (object)owner != null ) ? owner.GUILayoutToggle( enabledValue, string.Empty,UIUtils.MenuItemEnableStyle, GUILayout.Width( 16 ) ) :
+ GUILayout.Toggle( enabledValue, string.Empty, UIUtils.MenuItemEnableStyle, GUILayout.Width( 16 ) );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ enabledValue = value;
+ }
+
+
+ EditorGUILayout.EndHorizontal();
+ EditorGUI.indentLevel--;
+ if( foldoutValue )
+ {
+ cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, ( EditorGUIUtility.isProSkin ? 0.5f : 0.25f ) );
+ EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle );
+ GUI.color = cachedColor;
+ DrawSection();
+ EditorGUILayout.EndVertical();
+ EditorGUILayout.Separator();
+ }
+ EditorGUI.indentLevel++;
+ EditorGUILayout.EndVertical();
+ }
+ GUILayout.EndHorizontal();
+ }
+
+
+ public static void DrawPropertyGroup( ref bool foldoutValue, string sectionName, DrawPropertySection DrawSection )
+ {
+ Color cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, 0.5f );
+ EditorGUILayout.BeginHorizontal( UIUtils.MenuItemToolbarStyle );
+ GUI.color = cachedColor;
+
+ bool value = GUILayout.Toggle( foldoutValue, sectionName, UIUtils.MenuItemToggleStyle );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ foldoutValue = value;
+ }
+ EditorGUILayout.EndHorizontal();
+
+ if( foldoutValue )
+ {
+ cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, ( EditorGUIUtility.isProSkin ? 0.5f : 0.25f ) );
+ EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle );
+ {
+ GUI.color = cachedColor;
+ EditorGUI.indentLevel++;
+ DrawSection();
+ EditorGUI.indentLevel--;
+ EditorGUILayout.Separator();
+ }
+ EditorGUILayout.EndVertical();
+ }
+ }
+
+ public static void DrawPropertyGroup( ref bool foldoutValue, string sectionName, DrawPropertySection DrawSection, DrawPropertySection HeaderSection )
+ {
+ Color cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, 0.5f );
+ EditorGUILayout.BeginHorizontal( UIUtils.MenuItemToolbarStyle );
+ GUI.color = cachedColor;
+
+ bool value = GUILayout.Toggle( foldoutValue, sectionName, UIUtils.MenuItemToggleStyle );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ foldoutValue = value;
+ }
+ HeaderSection();
+ EditorGUILayout.EndHorizontal();
+
+ if( foldoutValue )
+ {
+ cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, ( EditorGUIUtility.isProSkin ? 0.5f : 0.25f ) );
+ EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle );
+ {
+ GUI.color = cachedColor;
+ EditorGUI.indentLevel++;
+ DrawSection();
+ EditorGUI.indentLevel--;
+ EditorGUILayout.Separator();
+ }
+ EditorGUILayout.EndVertical();
+ }
+ }
+
+
+ public static bool DrawPropertyGroup( UndoParentNode owner, ref bool foldoutValue, ref bool enabledValue, string sectionName, DrawPropertySection DrawSection )
+ {
+ bool enableChanged = false;
+ Color cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, 0.5f );
+ EditorGUILayout.BeginHorizontal( UIUtils.MenuItemToolbarStyle );
+ GUI.color = cachedColor;
+ bool value = GUILayout.Toggle( foldoutValue, sectionName, UIUtils.MenuItemToggleStyle, GUILayout.ExpandWidth( true ) );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ foldoutValue = value;
+ }
+ EditorGUI.BeginChangeCheck();
+ value = ( (object)owner != null ) ? owner.EditorGUILayoutToggle( string.Empty, enabledValue, UIUtils.MenuItemEnableStyle, GUILayout.Width( 16 ) ) :
+ EditorGUILayout.Toggle( string.Empty, enabledValue, UIUtils.MenuItemEnableStyle, GUILayout.Width( 16 ) );
+ if( Event.current.button == Constants.FoldoutMouseId )
+ {
+ enabledValue = value;
+ }
+ if( EditorGUI.EndChangeCheck() )
+ {
+ enableChanged = true;
+ }
+
+ EditorGUILayout.EndHorizontal();
+
+ if( foldoutValue )
+ {
+ cachedColor = GUI.color;
+ GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, ( EditorGUIUtility.isProSkin ? 0.5f : 0.25f ) );
+ EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle );
+ GUI.color = cachedColor;
+
+ EditorGUILayout.Separator();
+ EditorGUI.BeginDisabledGroup( !enabledValue );
+
+ EditorGUI.indentLevel += 1;
+
+ DrawSection();
+
+ EditorGUI.indentLevel -= 1;
+ EditorGUI.EndDisabledGroup();
+ EditorGUILayout.Separator();
+ EditorGUILayout.EndVertical();
+ }
+
+ return enableChanged;
+ }
+ }
+}