diff options
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateDataParent.cs')
-rw-r--r-- | Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateDataParent.cs | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateDataParent.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateDataParent.cs new file mode 100644 index 00000000..b7c3fd02 --- /dev/null +++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateDataParent.cs @@ -0,0 +1,217 @@ +// Amplify Shader Editor - Visual Shader Editing Tool +// Copyright (c) Amplify Creations, Lda <info@amplify.pt> + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace AmplifyShaderEditor +{ + public enum TemplateDataType + { + LegacySinglePass, + MultiPass + } + + [Serializable] + public class TemplateIncludePragmaContainter + { + [SerializeField] + private int m_nativeTopIndex = -1; + + [SerializeField] + private List<string> m_nativeDirectivesList = new List<string>(); + + [SerializeField] + private List<string> m_includesList = new List<string>(); + private Dictionary<string,string> m_includesDict = new Dictionary<string,string>(); + + [SerializeField] + private List<string> m_pragmasList = new List<string>(); + private Dictionary<string, string> m_pragmasDict = new Dictionary<string, string>(); + + [SerializeField] + private List<string> m_definesList = new List<string>(); + private Dictionary<string, string> m_definesDict = new Dictionary<string, string>(); + + public void RefreshIncludesList() + { + if ( m_includesDict.Count != m_includesList.Count ) + { + m_includesDict.Clear(); + int count = m_includesList.Count; + for ( int i = 0; i < count; i++ ) + { + m_includesDict.Add( m_includesList[ i ], m_includesList[ i ] ); + } + } + } + + public void RefreshPragmasList() + { + if ( m_pragmasDict.Count != m_pragmasList.Count ) + { + m_pragmasDict.Clear(); + int count = m_pragmasList.Count; + for ( int i = 0; i < count; i++ ) + { + m_pragmasDict.Add( m_pragmasList[ i ], m_pragmasList[ i ] ); + } + } + } + + + public void RefreshDefinesList() + { + if ( m_definesDict.Count != m_definesList.Count ) + { + m_definesDict.Clear(); + int count = m_definesList.Count; + for ( int i = 0; i < count; i++ ) + { + m_definesDict.Add( m_definesList[ i ], m_definesList[ i ] ); + } + } + } + + public bool HasInclude( string include ) + { + RefreshIncludesList(); + return m_includesDict.ContainsKey( include ); + } + + public bool HasPragma( string pragma ) + { + RefreshPragmasList(); + return m_pragmasDict.ContainsKey( pragma ); + } + + public bool HasDefine( string pragma ) + { + RefreshDefinesList(); + return m_definesDict.ContainsKey( pragma ); + } + + public void AddInclude( string include ) + { + RefreshIncludesList(); + if ( !m_includesDict.ContainsKey( include ) ) + { + m_includesList.Add( include ); + m_includesDict.Add( include, include ); + } + } + + public void AddPragma( string pragma ) + { + RefreshPragmasList(); + if ( !m_pragmasDict.ContainsKey( pragma ) ) + { + m_pragmasList.Add( pragma ); + m_pragmasDict.Add( pragma, pragma ); + } + } + + public void AddDefine( string define ) + { + RefreshDefinesList(); + if ( !m_definesDict.ContainsKey( define ) ) + { + m_definesList.Add( define ); + m_definesDict.Add( define, define ); + } + } + + public void AddNativeDirective( string native, int topIndex ) + { + m_nativeTopIndex = topIndex; + m_nativeDirectivesList.Add( native ); + } + + public void Destroy() + { + m_nativeDirectivesList.Clear(); + m_nativeDirectivesList = null; + + + m_includesList.Clear(); + m_includesDict.Clear(); + m_includesList = null; + m_includesDict = null; + + m_pragmasList.Clear(); + m_pragmasDict.Clear(); + m_pragmasList = null; + m_pragmasDict = null; + + m_definesList.Clear(); + m_definesDict.Clear(); + m_definesList = null; + m_definesDict = null; + } + + public List<string> IncludesList { get { return m_includesList; } } + public List<string> PragmasList { get { return m_pragmasList; } } + public List<string> DefinesList { get { return m_definesList; } } + public List<string> NativeDirectivesList { get { return m_nativeDirectivesList; } } + public int NativeTopIndex { get { return m_nativeTopIndex; } } + + } + + [Serializable] + public class TemplateInfoContainer + { + public string Id = string.Empty; + public string Data = string.Empty; + public int Index = -1; + public bool IsValid { get { return Index > -1; } } + public void Reset() + { + Id = string.Empty; + Data = string.Empty; + Index = -1; + } + } + + [Serializable] + public class TemplateDataParent : ScriptableObject + { + [SerializeField] + protected TemplateDataType m_templateType; + + [SerializeField] + protected string m_name; + + [SerializeField] + protected string m_guid; + + [SerializeField] + protected int m_orderId; + + [SerializeField] + protected string m_defaultShaderName = string.Empty; + + [SerializeField] + protected bool m_isValid = true; + + [SerializeField] + protected bool m_communityTemplate = false; + + public virtual void Destroy() { } + public virtual bool Reload() { return true; } + public string Name + { + get { return m_name; } + set + { + m_name = value.StartsWith( "Hidden/" ) ? value.Replace( "Hidden/", string.Empty ) : value; + } + } + public string GUID { get { return m_guid; } set { m_guid = value; } } + public int OrderId { get { return m_orderId; } set { m_orderId = value; } } + public string DefaultShaderName { get { return m_defaultShaderName; } set { m_defaultShaderName = value; } } + public bool IsValid { get { return m_isValid; } } + public TemplateDataType TemplateType { get { return m_templateType; } } + public virtual void Init( string name, string guid, bool isCommunity ) { m_communityTemplate = isCommunity; } + } +} |