|
|
- // 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();
- }
- }
- }
|