summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Menu/AmplifyShaderFunction.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/Menu/AmplifyShaderFunction.cs
parent917e9e0b320775634dc2e710f7deac74fd0822f0 (diff)
*移动amplify shader editor到third party目录
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Menu/AmplifyShaderFunction.cs')
-rw-r--r--Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Menu/AmplifyShaderFunction.cs189
1 files changed, 189 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Menu/AmplifyShaderFunction.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Menu/AmplifyShaderFunction.cs
new file mode 100644
index 00000000..df83bedb
--- /dev/null
+++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Menu/AmplifyShaderFunction.cs
@@ -0,0 +1,189 @@
+// Amplify Shader Editor - Visual Shader Editing Tool
+// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
+
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections.Generic;
+using AmplifyShaderEditor;
+
+[Serializable]
+public class AmplifyShaderFunction : ScriptableObject
+{
+ [SerializeField]
+ private string m_functionInfo = string.Empty;
+ public string FunctionInfo
+ {
+ get { return m_functionInfo; }
+ set { m_functionInfo = value; }
+ }
+
+ [SerializeField]
+ private string m_functionName = string.Empty;
+ public string FunctionName
+ {
+ get { if( m_functionName.Length == 0 ) return name; else return m_functionName; }
+ set { m_functionName = value; }
+ }
+
+ [SerializeField]
+ [TextArea( 5, 15 )]
+ private string m_description = string.Empty;
+ public string Description
+ {
+ get { return m_description; }
+ set { m_description = value; }
+ }
+
+ [SerializeField]
+ private AdditionalIncludesHelper m_additionalIncludes = new AdditionalIncludesHelper();
+ //public AdditionalIncludesHelper AdditionalIncludes
+ //{
+ // get { return m_additionalIncludes; }
+ // set { m_additionalIncludes = value; }
+ //}
+
+ [SerializeField]
+ private AdditionalPragmasHelper m_additionalPragmas = new AdditionalPragmasHelper();
+ //public AdditionalPragmasHelper AdditionalPragmas
+ //{
+ // get { return m_additionalPragmas; }
+ // set { m_additionalPragmas = value; }
+ //}
+
+ [SerializeField]
+ private TemplateAdditionalDirectivesHelper m_additionalDirectives = new TemplateAdditionalDirectivesHelper( " Additional Directives" );
+ public TemplateAdditionalDirectivesHelper AdditionalDirectives
+ {
+ get { return m_additionalDirectives; }
+ set { m_additionalDirectives = value; }
+ }
+
+ [SerializeField]
+ private FunctionNodeCategories m_nodeCategory = FunctionNodeCategories.Functions;
+ public FunctionNodeCategories NodeCategory
+ {
+ get { return m_nodeCategory; }
+ set { m_nodeCategory = value; }
+ }
+
+ [SerializeField]
+ private string m_customNodeCategory = string.Empty;
+ public string CustomNodeCategory
+ {
+ get
+ {
+ if( m_nodeCategory == FunctionNodeCategories.Custom )
+ {
+ if( string.IsNullOrEmpty( m_customNodeCategory ) )
+ return "Functions";
+ else
+ return m_customNodeCategory;
+ }
+ else
+ {
+ return UIUtils.CategoryPresets[ (int)m_nodeCategory ];
+ //return new SerializedObject( this ).FindProperty( "m_nodeCategory" ).enumDisplayNames[ (int)m_nodeCategory ];
+ }
+ }
+ }
+
+ [SerializeField]
+ private PreviewLocation m_previewPosition = PreviewLocation.Auto;
+ public PreviewLocation PreviewPosition
+ {
+ get { return m_previewPosition; }
+ set { m_previewPosition = value; }
+ }
+
+ [SerializeField]
+ private bool m_hidden = false;
+ public bool Hidden
+ {
+ get { return m_hidden; }
+ set { m_hidden = value; }
+ }
+
+ public void UpdateDirectivesList()
+ {
+ m_additionalDirectives.CleanNullDirectives();
+ m_additionalDirectives.UpdateDirectivesFromSaveItems();
+
+ if( m_additionalIncludes.IncludeList.Count > 0 )
+ {
+ m_additionalDirectives.AddItems( AdditionalLineType.Include, m_additionalIncludes.IncludeList );
+ m_additionalIncludes.IncludeList.Clear();
+ }
+
+ if( m_additionalPragmas.PragmaList.Count > 0 )
+ {
+ m_additionalDirectives.AddItems( AdditionalLineType.Pragma, m_additionalPragmas.PragmaList );
+ m_additionalPragmas.PragmaList.Clear();
+ }
+ }
+
+ public void ResetDirectivesOrigin()
+ {
+ //if( UIUtils.CurrentShaderVersion() < 16807 )
+ // Although the correct version was 1.6.7 rev 07 this issue was only detected on v1.7.1. rev 00
+ // So to avoid potential incorrect saves over shader functions, I decided to broaden up the version range
+ if( UIUtils.CurrentShaderVersion() < 17101 )
+ {
+ m_additionalDirectives.ResetDirectivesOrigin();
+ }
+ }
+}
+
+public class ShaderFunctionDetector : AssetPostprocessor
+{
+ static void OnPostprocessAllAssets( string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths )
+ {
+ if( UIUtils.CurrentWindow == null )
+ return;
+
+ bool markForRefresh = false;
+ AmplifyShaderFunction function = null;
+ for( int i = 0; i < importedAssets.Length; i++ )
+ {
+ function = AssetDatabase.LoadAssetAtPath<AmplifyShaderFunction>( importedAssets[ i ] );
+ if( function != null )
+ {
+ markForRefresh = true;
+ break;
+ }
+ }
+
+ if( deletedAssets.Length > 0 )
+ markForRefresh = true;
+
+ for( int i = 0; i < movedAssets.Length; i++ )
+ {
+ function = AssetDatabase.LoadAssetAtPath<AmplifyShaderFunction>( movedAssets[ i ] );
+ if( function != null )
+ {
+ markForRefresh = true;
+ break;
+ }
+ }
+
+ for( int i = 0; i < movedFromAssetPaths.Length; i++ )
+ {
+ function = AssetDatabase.LoadAssetAtPath<AmplifyShaderFunction>( movedFromAssetPaths[ i ] );
+ if( function != null )
+ {
+ markForRefresh = true;
+ break;
+ }
+ }
+
+ if( markForRefresh )
+ {
+ markForRefresh = false;
+ if( function != null )
+ {
+ IOUtils.UpdateSFandRefreshWindows( function );
+ }
+ UIUtils.CurrentWindow.LateRefreshAvailableNodes();
+ }
+ }
+}