| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 | // 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, string path, bool isCommunity ) { m_communityTemplate = isCommunity; }	}}
 |