summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/FallbackPickerHelper.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-10-23 13:08:43 +0800
committerchai <chaifix@163.com>2020-10-23 13:08:43 +0800
commitb82da95b5181ac8bbae38efb13e950d5e88a4caa (patch)
tree48a6f3269276484bbc7cfc95f0651f40a2176aa1 /Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/FallbackPickerHelper.cs
parent917e9e0b320775634dc2e710f7deac74fd0822f0 (diff)
*移动amplify shader editor到third party目录
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/FallbackPickerHelper.cs')
-rw-r--r--Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/FallbackPickerHelper.cs119
1 files changed, 119 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/FallbackPickerHelper.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/FallbackPickerHelper.cs
new file mode 100644
index 00000000..6d006a96
--- /dev/null
+++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Master/FallbackPickerHelper.cs
@@ -0,0 +1,119 @@
+using System;
+using UnityEngine;
+using UnityEditor;
+
+namespace AmplifyShaderEditor
+{
+ [Serializable]
+ public class FallbackPickerHelper : ScriptableObject
+ {
+ private const string FallbackFormat = "Fallback \"{0}\"";
+ private const string FallbackShaderStr = "Fallback";
+ private const string ShaderPoputContext = "CONTEXT/ShaderPopup";
+
+ private Material m_dummyMaterial;
+ private MenuCommand m_dummyCommand;
+
+ [SerializeField]
+ private string m_fallbackShader = string.Empty;
+
+ public void Init()
+ {
+ hideFlags = HideFlags.HideAndDontSave;
+ m_dummyMaterial = null;
+ m_dummyCommand = null;
+ }
+
+ public void Draw( ParentNode owner )
+ {
+ EditorGUILayout.BeginHorizontal();
+ m_fallbackShader = owner.EditorGUILayoutTextField( FallbackShaderStr, m_fallbackShader );
+ if ( GUILayout.Button( string.Empty, UIUtils.InspectorPopdropdownFallback, GUILayout.Width( 17 ), GUILayout.Height( 19 ) ) )
+ {
+ EditorGUI.FocusTextInControl( null );
+ GUI.FocusControl( null );
+ DisplayShaderContext( owner, GUILayoutUtility.GetRect( GUIContent.none, EditorStyles.popup ) );
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+
+ private void DisplayShaderContext( ParentNode node, Rect r )
+ {
+ if ( m_dummyCommand == null )
+ m_dummyCommand = new MenuCommand( this, 0 );
+
+ if ( m_dummyMaterial == null )
+ m_dummyMaterial = new Material( Shader.Find( "Hidden/ASESShaderSelectorUnlit" ) );
+
+#pragma warning disable 0618
+ UnityEditorInternal.InternalEditorUtility.SetupShaderMenu( m_dummyMaterial );
+#pragma warning restore 0618
+ EditorUtility.DisplayPopupMenu( r, ShaderPoputContext, m_dummyCommand );
+ }
+
+ private void OnSelectedShaderPopup( string command, Shader shader )
+ {
+ if ( shader != null )
+ {
+ UIUtils.MarkUndoAction();
+ Undo.RecordObject( this, "Selected fallback shader" );
+ m_fallbackShader = shader.name;
+ }
+ }
+
+ public void ReadFromString( ref uint index, ref string[] nodeParams )
+ {
+ m_fallbackShader = nodeParams[ index++ ];
+ }
+
+ public void WriteToString( ref string nodeInfo )
+ {
+ IOUtils.AddFieldValueToString( ref nodeInfo, m_fallbackShader );
+ }
+
+ public void Destroy()
+ {
+ GameObject.DestroyImmediate( m_dummyMaterial );
+ m_dummyMaterial = null;
+ m_dummyCommand = null;
+ }
+
+ public string TabbedFallbackShader
+ {
+ get
+ {
+ if( string.IsNullOrEmpty( m_fallbackShader ) )
+ return string.Empty;
+
+ return "\t" + string.Format( FallbackFormat, m_fallbackShader ) + "\n";
+ }
+ }
+
+ public string FallbackShader
+ {
+ get
+ {
+ if( string.IsNullOrEmpty( m_fallbackShader ) )
+ return string.Empty;
+
+ return string.Format( FallbackFormat, m_fallbackShader );
+ }
+ }
+
+ public string RawFallbackShader
+ {
+ get
+ {
+ return m_fallbackShader;
+ }
+ set
+ {
+ m_fallbackShader = value;
+ }
+ }
+
+
+ public bool Active { get { return !string.IsNullOrEmpty( m_fallbackShader ); } }
+
+ }
+}