summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/AdditionalIncludesHelper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/AdditionalIncludesHelper.cs')
-rw-r--r--Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/AdditionalIncludesHelper.cs154
1 files changed, 154 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/AdditionalIncludesHelper.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/AdditionalIncludesHelper.cs
new file mode 100644
index 00000000..542b586f
--- /dev/null
+++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/AdditionalIncludesHelper.cs
@@ -0,0 +1,154 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+namespace AmplifyShaderEditor
+{
+ [Serializable]
+ public class AdditionalIncludesHelper
+ {
+ private const string AdditionalIncludesStr = " Additional Includes";
+ private const float ShaderKeywordButtonLayoutWidth = 15;
+ private ParentNode m_currentOwner;
+
+ [SerializeField]
+ private List<string> m_additionalIncludes = new List<string>();
+ public List<string> IncludeList { get { return m_additionalIncludes; } set { m_additionalIncludes = value; } }
+
+ [SerializeField]
+ private List<string> m_outsideIncludes = new List<string>();
+ public List<string> OutsideList { get { return m_outsideIncludes; } set { m_outsideIncludes = value; } }
+
+ public void Draw( ParentNode owner )
+ {
+ m_currentOwner = owner;
+ bool value = owner.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedAdditionalIncludes;
+ NodeUtils.DrawPropertyGroup( ref value, AdditionalIncludesStr, DrawMainBody, DrawButtons );
+ owner.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedAdditionalIncludes = value;
+
+ }
+
+ void DrawButtons()
+ {
+ EditorGUILayout.Separator();
+
+ // Add keyword
+ if( GUILayout.Button( string.Empty, UIUtils.PlusStyle, GUILayout.Width( ShaderKeywordButtonLayoutWidth ) ) )
+ {
+ m_additionalIncludes.Add( string.Empty );
+ EditorGUI.FocusTextInControl( null );
+ }
+
+ //Remove keyword
+ if( GUILayout.Button( string.Empty, UIUtils.MinusStyle, GUILayout.Width( ShaderKeywordButtonLayoutWidth ) ) )
+ {
+ if( m_additionalIncludes.Count > 0 )
+ {
+ m_additionalIncludes.RemoveAt( m_additionalIncludes.Count - 1 );
+ EditorGUI.FocusTextInControl( null );
+ }
+ }
+ }
+
+ void DrawMainBody()
+ {
+ EditorGUILayout.Separator();
+ //if( OutsideList != null && OutsideList.Count > 0 )
+ //{
+ // m_drawElements.Clear();
+ // EditorGUI.BeginDisabledGroup( true );
+ // int outsideCount = OutsideList.Count;
+ // for( int i = 0; i < outsideCount; i++ )
+ // {
+ // if( !m_drawElements.Contains( OutsideList[ i ] ) )
+ // {
+ // m_drawElements.Add( OutsideList[ i ] );
+ // EditorGUILayout.TextField( OutsideList[ i ] );
+ // }
+ // }
+ // EditorGUI.EndDisabledGroup();
+ // EditorGUILayout.Separator();
+ //}
+ int itemCount = m_additionalIncludes.Count;
+ int markedToDelete = -1;
+ for( int i = 0; i < itemCount; i++ )
+ {
+ EditorGUILayout.BeginHorizontal();
+ {
+ EditorGUI.BeginChangeCheck();
+ m_additionalIncludes[ i ] = EditorGUILayout.TextField( m_additionalIncludes[ i ] );
+ if( EditorGUI.EndChangeCheck() )
+ {
+ m_additionalIncludes[ i ] = UIUtils.RemoveShaderInvalidCharacters( m_additionalIncludes[ i ] );
+ }
+
+ // Add new port
+ if( m_currentOwner.GUILayoutButton( string.Empty, UIUtils.PlusStyle, GUILayout.Width( ShaderKeywordButtonLayoutWidth ) ) )
+ {
+ m_additionalIncludes.Insert( i + 1, string.Empty );
+ EditorGUI.FocusTextInControl( null );
+ }
+
+ //Remove port
+ if( m_currentOwner.GUILayoutButton( string.Empty, UIUtils.MinusStyle, GUILayout.Width( ShaderKeywordButtonLayoutWidth ) ) )
+ {
+ markedToDelete = i;
+ }
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+
+ if( markedToDelete > -1 )
+ {
+ if( m_additionalIncludes.Count > markedToDelete )
+ {
+ m_additionalIncludes.RemoveAt( markedToDelete );
+ EditorGUI.FocusTextInControl( null );
+ }
+ }
+ EditorGUILayout.Separator();
+ EditorGUILayout.HelpBox( "Please add your includes without the #include \"\" keywords", MessageType.Info );
+ }
+
+ public void ReadFromString( ref uint index, ref string[] nodeParams )
+ {
+ int count = Convert.ToInt32( nodeParams[ index++ ] );
+ for( int i = 0; i < count; i++ )
+ {
+ m_additionalIncludes.Add( nodeParams[ index++ ] );
+ }
+ }
+
+ public void WriteToString( ref string nodeInfo )
+ {
+ IOUtils.AddFieldValueToString( ref nodeInfo, m_additionalIncludes.Count );
+ for( int i = 0; i < m_additionalIncludes.Count; i++ )
+ {
+ IOUtils.AddFieldValueToString( ref nodeInfo, m_additionalIncludes[ i ] );
+ }
+ }
+
+ public void AddToDataCollector( ref MasterNodeDataCollector dataCollector )
+ {
+ for( int i = 0; i < m_additionalIncludes.Count; i++ )
+ {
+ if( !string.IsNullOrEmpty( m_additionalIncludes[ i ] ) )
+ dataCollector.AddToIncludes( -1, m_additionalIncludes[ i ] );
+ }
+
+ for( int i = 0; i < m_outsideIncludes.Count; i++ )
+ {
+ if( !string.IsNullOrEmpty( m_outsideIncludes[ i ] ) )
+ dataCollector.AddToIncludes( -1, m_outsideIncludes[ i ] );
+ }
+ }
+
+ public void Destroy()
+ {
+ m_additionalIncludes.Clear();
+ m_additionalIncludes = null;
+ m_currentOwner = null;
+ }
+ }
+}