diff options
Diffstat (limited to 'Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMasterNode.cs')
-rw-r--r-- | Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMasterNode.cs | 750 |
1 files changed, 0 insertions, 750 deletions
diff --git a/Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMasterNode.cs b/Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMasterNode.cs deleted file mode 100644 index 6d6c1de9..00000000 --- a/Assets/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMasterNode.cs +++ /dev/null @@ -1,750 +0,0 @@ -// Amplify Shader Editor - Visual Shader Editing Tool -// Copyright (c) Amplify Creations, Lda <info@amplify.pt> - -// THIS FILE IS DEPRECATED AND SHOULD NOT BE USED - -#define SHOW_TEMPLATE_HELP_BOX - -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEditor; - -namespace AmplifyShaderEditor -{ - [Serializable] - [NodeAttributes( "Template Master Node", "Master", "Shader Generated according to template rules", null, KeyCode.None, false, true, "Template MultiPass Master Node", typeof( TemplateMultiPassMasterNode ) )] - public sealed class TemplateMasterNode : MasterNode - { - private const string WarningMessage = "Templates is a feature that is still heavily under development and users may experience some problems.\nPlease email support@amplify.pt if any issue occurs."; - private const string CurrentTemplateLabel = "Current Template"; - private const string OpenTemplateStr = "Edit Template"; - - //protected const string SnippetsFoldoutStr = " Snippets"; - //[SerializeField] - //private bool m_snippetsFoldout = true; - - [NonSerialized] - private TemplateData m_currentTemplate = null; - - private bool m_fireTemplateChange = false; - private bool m_fetchMasterNodeCategory = false; - private bool m_reRegisterTemplateData = false; - - [SerializeField] - private string m_templateGUID = string.Empty; - - [SerializeField] - private string m_templateName = string.Empty; - - [SerializeField] - private TemplatesBlendModule m_blendOpHelper = new TemplatesBlendModule(); - - [SerializeField] - private TemplateCullModeModule m_cullModeHelper = new TemplateCullModeModule(); - - [SerializeField] - private TemplateColorMaskModule m_colorMaskHelper = new TemplateColorMaskModule(); - - [SerializeField] - private TemplatesStencilBufferModule m_stencilBufferHelper = new TemplatesStencilBufferModule(); - - [SerializeField] - private TemplateDepthModule m_depthOphelper = new TemplateDepthModule(); - - [SerializeField] - private TemplateTagsModule m_tagsHelper = new TemplateTagsModule(); - - protected override void CommonInit( int uniqueId ) - { - base.CommonInit( uniqueId ); - m_masterNodeCategory = 1;// First Template - m_marginPreviewLeft = 20; - m_insideSize.y = 60; - m_customPrecision = true; - } - - public override void ReleaseResources() - { - if( m_currentTemplate != null && m_currentTemplate.AvailableShaderProperties != null ) - { - // Unregister old template properties - int oldPropertyCount = m_currentTemplate.AvailableShaderProperties.Count; - for( int i = 0; i < oldPropertyCount; i++ ) - { - UIUtils.ReleaseUniformName( UniqueId, m_currentTemplate.AvailableShaderProperties[ i ].PropertyName ); - } - } - } - - public override void OnEnable() - { - base.OnEnable(); - m_reRegisterTemplateData = true; - } - - void FetchInfoFromTemplate() - { - if( m_currentTemplate.BlendData.DataCheck == TemplateDataCheck.Valid ) - m_blendOpHelper.ConfigureFromTemplateData( m_currentTemplate.BlendData ); - - if( m_currentTemplate.CullModeData.DataCheck == TemplateDataCheck.Valid ) - m_cullModeHelper.ConfigureFromTemplateData( m_currentTemplate.CullModeData ); - - if( m_currentTemplate.ColorMaskData.DataCheck == TemplateDataCheck.Valid ) - m_colorMaskHelper.ConfigureFromTemplateData( m_currentTemplate.ColorMaskData ); - - if( m_currentTemplate.StencilData.DataCheck == TemplateDataCheck.Valid ) - m_stencilBufferHelper.ConfigureFromTemplateData( m_currentTemplate.StencilData ); - - if( m_currentTemplate.DepthData.DataCheck == TemplateDataCheck.Valid ) - m_depthOphelper.ConfigureFromTemplateData( m_currentTemplate.DepthData ); - - if( m_currentTemplate.TagData.DataCheck == TemplateDataCheck.Valid ) - m_tagsHelper.ConfigureFromTemplateData( m_currentTemplate.TagData ); - } - - void FetchCurrentTemplate() - { - m_currentTemplate = m_containerGraph.ParentWindow.TemplatesManagerInstance.GetTemplate( m_templateGUID ) as TemplateData; - if( m_currentTemplate == null ) - { - m_currentTemplate = m_containerGraph.ParentWindow.TemplatesManagerInstance.GetTemplate( m_templateName ) as TemplateData; - } - - if( m_currentTemplate != null ) - { - if( m_inputPorts.Count != m_currentTemplate.InputDataList.Count ) - { - DeleteAllInputConnections( true ); - - List<TemplateInputData> inputDataList = m_currentTemplate.InputDataList; - int count = inputDataList.Count; - for( int i = 0; i < count; i++ ) - { - AddInputPort( inputDataList[ i ].DataType, false, inputDataList[ i ].PortName, inputDataList[ i ].OrderId, inputDataList[ i ].PortCategory, inputDataList[ i ].PortUniqueId ); - } - FetchInfoFromTemplate(); - } - else - { - List<TemplateInputData> inputDataList = m_currentTemplate.InputDataList; - int count = inputDataList.Count; - for( int i = 0; i < count; i++ ) - { - m_inputPorts[ i ].ChangeProperties( inputDataList[ i ].PortName, inputDataList[ i ].DataType, false ); - } - } - } - } - - public override void RefreshAvailableCategories() - { - FetchCurrentTemplate(); - - int templateCount = m_containerGraph.ParentWindow.TemplatesManagerInstance.TemplateCount; - m_availableCategories = new MasterNodeCategoriesData[ templateCount + 1 ]; - m_availableCategoryLabels = new GUIContent[ templateCount + 1 ]; - - m_availableCategories[ 0 ] = new MasterNodeCategoriesData( AvailableShaderTypes.SurfaceShader, string.Empty ); - m_availableCategoryLabels[ 0 ] = new GUIContent( "Surface" ); - if( m_currentTemplate == null ) - { - m_masterNodeCategory = -1; - } - - for( int i = 0; i < templateCount; i++ ) - { - int idx = i + 1; - TemplateData templateData = m_containerGraph.ParentWindow.TemplatesManagerInstance.GetTemplate( i ) as TemplateData; - - if( m_currentTemplate != null && m_currentTemplate.GUID.Equals( templateData.GUID ) ) - m_masterNodeCategory = idx; - - m_availableCategories[ idx ] = new MasterNodeCategoriesData( AvailableShaderTypes.Template, templateData.GUID ); - m_availableCategoryLabels[ idx ] = new GUIContent( templateData.Name ); - } - } - - void SetCategoryIdxFromTemplate() - { - int templateCount = m_containerGraph.ParentWindow.TemplatesManagerInstance.TemplateCount; - for( int i = 0; i < templateCount; i++ ) - { - int idx = i + 1; - TemplateData templateData = m_containerGraph.ParentWindow.TemplatesManagerInstance.GetTemplate( i ) as TemplateData; - if( templateData != null && m_currentTemplate != null && m_currentTemplate.GUID.Equals( templateData.GUID ) ) - m_masterNodeCategory = idx; - } - } - - public void SetTemplate( TemplateData newTemplate, bool writeDefaultData, bool fetchMasterNodeCategory ) - { - ReleaseResources(); - - if( newTemplate == null || newTemplate.InputDataList == null ) - return; - - m_fetchMasterNodeCategory = fetchMasterNodeCategory; - - DeleteAllInputConnections( true ); - m_currentTemplate = newTemplate; - m_currentShaderData = newTemplate.Name; - - List<TemplateInputData> inputDataList = newTemplate.InputDataList; - int count = inputDataList.Count; - for( int i = 0; i < count; i++ ) - { - AddInputPort( inputDataList[ i ].DataType, false, inputDataList[ i ].PortName, inputDataList[ i ].OrderId, inputDataList[ i ].PortCategory, inputDataList[ i ].PortUniqueId ); - } - - if( writeDefaultData ) - { - ShaderName = newTemplate.DefaultShaderName; - } - - RegisterProperties(); - m_fireTemplateChange = true; - m_templateGUID = newTemplate.GUID; - m_templateName = newTemplate.DefaultShaderName; - FetchInfoFromTemplate(); - } - - void RegisterProperties() - { - if( m_currentTemplate != null ) - { - m_reRegisterTemplateData = false; - // Register old template properties - int newPropertyCount = m_currentTemplate.AvailableShaderProperties.Count; - for( int i = 0; i < newPropertyCount; i++ ) - { - int nodeId = UIUtils.CheckUniformNameOwner( m_currentTemplate.AvailableShaderProperties[ i ].PropertyName ); - if( nodeId > -1 ) - { - ParentNode node = m_containerGraph.GetNode( nodeId ); - if( node != null ) - { - UIUtils.ShowMessage( string.Format( "Template requires property name {0} which is currently being used by {1}. Please rename it and reload template.", m_currentTemplate.AvailableShaderProperties[ i ].PropertyName, node.Attributes.Name ) ); - } - else - { - UIUtils.ShowMessage( string.Format( "Template requires property name {0} which is currently being on your graph. Please rename it and reload template.", m_currentTemplate.AvailableShaderProperties[ i ].PropertyName ) ); - } - } - else - { - UIUtils.RegisterUniformName( UniqueId, m_currentTemplate.AvailableShaderProperties[ i ].PropertyName ); - } - } - } - } - - public override void DrawProperties() - { - if( m_currentTemplate == null ) - return; - - base.DrawProperties(); - - bool generalIsVisible = ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedGeneralShaderOptions; - NodeUtils.DrawPropertyGroup( ref generalIsVisible, GeneralFoldoutStr, DrawGeneralOptions ); - ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedGeneralShaderOptions = generalIsVisible; - if( m_currentTemplate.BlendData.DataCheck == TemplateDataCheck.Valid ) - m_blendOpHelper.Draw( this ); - - - if( m_currentTemplate.StencilData.DataCheck == TemplateDataCheck.Valid ) - { - CullMode cullMode = ( m_currentTemplate.CullModeData.DataCheck == TemplateDataCheck.Valid ) ? m_cullModeHelper.CurrentCullMode : CullMode.Back; - m_stencilBufferHelper.Draw( this, cullMode ); - } - - if( m_currentTemplate.DepthData.DataCheck == TemplateDataCheck.Valid ) - m_depthOphelper.Draw( this ); - - if( m_currentTemplate.TagData.DataCheck == TemplateDataCheck.Valid ) - m_tagsHelper.Draw( this ); - - DrawMaterialInputs( UIUtils.MenuItemToolbarStyle ); - - // NodeUtils.DrawPropertyGroup( ref m_snippetsFoldout, SnippetsFoldoutStr, DrawSnippetOptions ); - if( GUILayout.Button( OpenTemplateStr ) && m_currentTemplate != null ) - { - try - { - string pathname = AssetDatabase.GUIDToAssetPath( m_currentTemplate.GUID ); - if( !string.IsNullOrEmpty( pathname ) ) - { - Shader selectedTemplate = AssetDatabase.LoadAssetAtPath<Shader>( pathname ); - if( selectedTemplate != null ) - { - AssetDatabase.OpenAsset( selectedTemplate, 1 ); - } - } - } - catch( Exception e ) - { - Debug.LogException( e ); - } - } - -#if SHOW_TEMPLATE_HELP_BOX - EditorGUILayout.HelpBox( WarningMessage, MessageType.Warning ); -#endif - - } - - public void DrawGeneralOptions() - { - DrawShaderName(); - DrawCurrentShaderType(); - EditorGUI.BeginChangeCheck(); - DrawPrecisionProperty( false ); - if( EditorGUI.EndChangeCheck() ) - ContainerGraph.CurrentPrecision = m_currentPrecisionType; - - if( m_currentTemplate.CullModeData.DataCheck == TemplateDataCheck.Valid ) - m_cullModeHelper.Draw( this ); - - if( m_currentTemplate.ColorMaskData.DataCheck == TemplateDataCheck.Valid ) - m_colorMaskHelper.Draw( this ); - } - - //public void DrawSnippetOptions() - //{ - // m_currentTemplate.DrawSnippetProperties( this ); - //} - - bool CreateInstructionsForList( ref List<InputPort> ports, ref string shaderBody, ref List<string> vertexInstructions, ref List<string> fragmentInstructions ) - { - if( ports.Count == 0 ) - return true; - - bool isValid = true; - UIUtils.CurrentWindow.CurrentGraph.ResetNodesLocalVariables(); - for( int i = 0; i < ports.Count; i++ ) - { - TemplateInputData inputData = m_currentTemplate.InputDataFromId( ports[ i ].PortId ); - if( ports[ i ].IsConnected ) - { - m_currentDataCollector.ResetInstructions(); - m_currentDataCollector.ResetVertexInstructions(); - - m_currentDataCollector.PortCategory = ports[ i ].Category; - string newPortInstruction = ports[ i ].GeneratePortInstructions( ref m_currentDataCollector ); - - - if( m_currentDataCollector.DirtySpecialLocalVariables ) - { - string cleanVariables = m_currentDataCollector.SpecialLocalVariables.Replace( "\t", string.Empty ); - m_currentDataCollector.AddInstructions( cleanVariables, false ); - m_currentDataCollector.ClearSpecialLocalVariables(); - } - - if( m_currentDataCollector.DirtyVertexVariables ) - { - string cleanVariables = m_currentDataCollector.VertexLocalVariables.Replace( "\t", string.Empty ); - m_currentDataCollector.AddVertexInstruction( cleanVariables, UniqueId, false ); - m_currentDataCollector.ClearVertexLocalVariables(); - } - - // fill functions - for( int j = 0; j < m_currentDataCollector.InstructionsList.Count; j++ ) - { - fragmentInstructions.Add( m_currentDataCollector.InstructionsList[ j ].PropertyName ); - } - - for( int j = 0; j < m_currentDataCollector.VertexDataList.Count; j++ ) - { - vertexInstructions.Add( m_currentDataCollector.VertexDataList[ j ].PropertyName ); - } - - isValid = m_currentTemplate.FillTemplateBody( inputData.TagId, ref shaderBody, newPortInstruction ) && isValid; - } - else - { - isValid = m_currentTemplate.FillTemplateBody( inputData.TagId, ref shaderBody, inputData.DefaultValue ) && isValid; - } - } - return isValid; - } - - public override void Draw( DrawInfo drawInfo ) - { - base.Draw( drawInfo ); - - if( m_currentTemplate == null ) - { - FetchCurrentTemplate(); - } - - if( m_reRegisterTemplateData ) - { - RegisterProperties(); - } - - if( m_containerGraph.IsInstancedShader ) - { - DrawInstancedIcon( drawInfo ); - } - - if( m_fetchMasterNodeCategory ) - { - if( m_availableCategories != null ) - { - m_fetchMasterNodeCategory = false; - SetCategoryIdxFromTemplate(); - } - } - - if( m_fireTemplateChange ) - { - m_fireTemplateChange = false; - m_containerGraph.FireMasterNodeReplacedEvent(); - } - } - - public override void UpdateFromShader( Shader newShader ) - { - if( m_currentMaterial != null ) - { - m_currentMaterial.shader = newShader; - } - CurrentShader = newShader; - } - - public override void UpdateMasterNodeMaterial( Material material ) - { - m_currentMaterial = material; - FireMaterialChangedEvt(); - } - - public override Shader Execute( string pathname, bool isFullPath ) - { - if( m_currentTemplate == null ) - return m_currentShader; - - //Create data collector - ForceReordering(); - base.Execute( pathname, isFullPath ); - - SetupNodeCategories(); - - m_currentDataCollector.TemplateDataCollectorInstance.BuildFromTemplateData( m_currentDataCollector, m_currentTemplate ); - int shaderPropertiesAmount = m_currentTemplate.AvailableShaderProperties.Count; - for( int i = 0; i < shaderPropertiesAmount; i++ ) - { - m_currentDataCollector.SoftRegisterUniform( m_currentTemplate.AvailableShaderProperties[ i ] ); - } - m_containerGraph.CheckPropertiesAutoRegister( ref m_currentDataCollector ); - - //Sort ports by both - List<InputPort> fragmentPorts = new List<InputPort>(); - List<InputPort> vertexPorts = new List<InputPort>(); - SortInputPorts( ref vertexPorts, ref fragmentPorts ); - - string shaderBody = m_currentTemplate.TemplateBody; - - List<string> vertexInstructions = new List<string>(); - List<string> fragmentInstructions = new List<string>(); - - bool validBody = true; - - validBody = CreateInstructionsForList( ref fragmentPorts, ref shaderBody, ref vertexInstructions, ref fragmentInstructions ) && validBody; - ContainerGraph.ResetNodesLocalVariablesIfNot( MasterNodePortCategory.Vertex ); - validBody = CreateInstructionsForList( ref vertexPorts, ref shaderBody, ref vertexInstructions, ref fragmentInstructions ) && validBody; - - m_currentTemplate.ResetTemplateUsageData(); - - // Fill vertex interpolators assignment - for( int i = 0; i < m_currentDataCollector.VertexInterpDeclList.Count; i++ ) - { - vertexInstructions.Add( m_currentDataCollector.VertexInterpDeclList[ i ] ); - } - - vertexInstructions.AddRange( m_currentDataCollector.TemplateDataCollectorInstance.GetInterpUnusedChannels() ); - //Fill common local variables and operations - - validBody = m_currentTemplate.FillVertexInstructions( ref shaderBody, vertexInstructions.ToArray() ) && validBody; - validBody = m_currentTemplate.FillFragmentInstructions( ref shaderBody, fragmentInstructions.ToArray() ) && validBody; - - // Add Instanced Properties - if( m_containerGraph.IsInstancedShader ) - { - m_currentDataCollector.TabifyInstancedVars(); - m_currentDataCollector.InstancedPropertiesList.Insert( 0, new PropertyDataCollector( -1, string.Format( IOUtils.InstancedPropertiesBegin, UIUtils.RemoveInvalidCharacters( m_shaderName ) ) ) ); - m_currentDataCollector.InstancedPropertiesList.Add( new PropertyDataCollector( -1, IOUtils.InstancedPropertiesEnd ) ); - m_currentDataCollector.UniformsList.AddRange( m_currentDataCollector.InstancedPropertiesList ); - } - - //Add Functions - m_currentDataCollector.UniformsList.AddRange( m_currentDataCollector.FunctionsList ); - - // Fill common tags - m_currentDataCollector.IncludesList.AddRange( m_currentDataCollector.PragmasList ); - - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.ShaderNameId, ref shaderBody, string.Format( TemplatesManager.NameFormatter, m_shaderName ) ) && validBody; - validBody = m_currentTemplate.FillTemplateBody( TemplatesManager.TemplatePassTag, ref shaderBody, m_currentDataCollector.GrabPassList ) && validBody; - validBody = m_currentTemplate.FillTemplateBody( TemplatesManager.TemplatePragmaTag, ref shaderBody, m_currentDataCollector.IncludesList ) && validBody; - //validBody = m_currentTemplate.FillTemplateBody( TemplatesManager.TemplateTagsTag, ref shaderBody, m_currentDataCollector.TagsList ) && validBody; - validBody = m_currentTemplate.FillTemplateBody( TemplatesManager.TemplatePropertyTag, ref shaderBody, m_currentDataCollector.BuildUnformatedPropertiesStringArr() ) && validBody; - validBody = m_currentTemplate.FillTemplateBody( TemplatesManager.TemplateGlobalsTag, ref shaderBody, m_currentDataCollector.UniformsList ) && validBody; - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.VertexDataId, ref shaderBody, m_currentDataCollector.VertexInputList.ToArray() ) && validBody; - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.InterpDataId, ref shaderBody, m_currentDataCollector.InterpolatorList.ToArray() ) && validBody; - - if( m_currentTemplate.BlendData.ValidBlendMode ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.BlendData.BlendModeId, ref shaderBody, m_blendOpHelper.CurrentBlendFactor ) && validBody; - } - - if( m_currentTemplate.BlendData.ValidBlendOp ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.BlendData.BlendOpId, ref shaderBody, m_blendOpHelper.CurrentBlendOp ) && validBody; - } - - if( m_currentTemplate.BlendData.ValidAlphaToMask ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.BlendData.AlphaToMaskId, ref shaderBody, m_blendOpHelper.CurrentAlphaToMask ) && validBody; - } - - if( m_currentTemplate.DepthData.ValidZWrite ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.DepthData.ZWriteModeId, ref shaderBody, m_depthOphelper.CurrentZWriteMode ) && validBody; - } - - if( m_currentTemplate.DepthData.ValidZTest ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.DepthData.ZTestModeId, ref shaderBody, m_depthOphelper.CurrentZTestMode ) && validBody; - } - - if( m_currentTemplate.DepthData.ValidOffset ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.DepthData.OffsetId, ref shaderBody, m_depthOphelper.CurrentOffset ) && validBody; - } - - if( m_currentTemplate.CullModeData.DataCheck == TemplateDataCheck.Valid ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.CullModeData.CullModeId, ref shaderBody, m_cullModeHelper.GenerateShaderData(false) ) && validBody; - } - - if( m_currentTemplate.ColorMaskData.DataCheck == TemplateDataCheck.Valid ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.ColorMaskData.ColorMaskId, ref shaderBody, m_colorMaskHelper.GenerateShaderData( false ) ) && validBody; - } - - if( m_currentTemplate.StencilData.DataCheck == TemplateDataCheck.Valid ) - { - CullMode cullMode = ( m_currentTemplate.CullModeData.DataCheck == TemplateDataCheck.Valid ) ? m_cullModeHelper.CurrentCullMode : CullMode.Back; - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.StencilData.StencilBufferId, ref shaderBody, m_stencilBufferHelper.CreateStencilOp( cullMode ) ) && validBody; - } - - if( m_currentTemplate.TagData.DataCheck == TemplateDataCheck.Valid ) - { - validBody = m_currentTemplate.FillTemplateBody( m_currentTemplate.TagData.TagsId, ref shaderBody, m_tagsHelper.GenerateTags() ) && validBody; - } - - if( m_currentDataCollector.TemplateDataCollectorInstance.HasVertexInputParams ) - { - validBody = m_currentTemplate.FillTemplateBody( TemplatesManager.TemplateInputsVertParamsTag, ref shaderBody, m_currentDataCollector.TemplateDataCollectorInstance.VertexInputParamsStr ) && validBody; - } - - if( m_currentDataCollector.TemplateDataCollectorInstance.HasFragmentInputParams ) - { - validBody = m_currentTemplate.FillTemplateBody( TemplatesManager.TemplateInputsFragParamsTag, ref shaderBody, m_currentDataCollector.TemplateDataCollectorInstance.FragInputParamsStr ) && validBody; - } - - m_currentTemplate.FillEmptyTags( ref shaderBody ); - - //m_currentTemplate.InsertSnippets( ref shaderBody ); - - vertexInstructions.Clear(); - vertexInstructions = null; - - fragmentInstructions.Clear(); - fragmentInstructions = null; - if( validBody ) - { - UpdateShaderAsset( ref pathname, ref shaderBody, isFullPath ); - } - - return m_currentShader; - } - - public override void ReadFromString( ref string[] nodeParams ) - { - base.ReadFromString( ref nodeParams ); - try - { - ShaderName = GetCurrentParam( ref nodeParams ); - if( m_shaderName.Length > 0 ) - ShaderName = UIUtils.RemoveShaderInvalidCharacters( ShaderName ); - - string templateGUID = GetCurrentParam( ref nodeParams ); - string templateShaderName = string.Empty; - if( UIUtils.CurrentShaderVersion() > 13601 ) - { - templateShaderName = GetCurrentParam( ref nodeParams ); - } - - TemplateData template = m_containerGraph.ParentWindow.TemplatesManagerInstance.GetTemplate( templateGUID ) as TemplateData; - if( template != null ) - { - SetTemplate( template, false, true ); - } - else - { - template = m_containerGraph.ParentWindow.TemplatesManagerInstance.GetTemplateByName( templateShaderName ) as TemplateData; - if( template != null ) - { - SetTemplate( template, false, true ); - } - else - { - m_masterNodeCategory = -1; - } - } - - if( UIUtils.CurrentShaderVersion() > 13902 ) - { - //BLEND MODULE - if( m_currentTemplate.BlendData.ValidBlendMode ) - { - m_blendOpHelper.ReadBlendModeFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - - if( m_currentTemplate.BlendData.ValidBlendOp ) - { - m_blendOpHelper.ReadBlendOpFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - - //CULL MODE - if( m_currentTemplate.CullModeData.DataCheck == TemplateDataCheck.Valid ) - { - m_cullModeHelper.ReadFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - - //COLOR MASK - if( m_currentTemplate.ColorMaskData.DataCheck == TemplateDataCheck.Valid ) - { - m_colorMaskHelper.ReadFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - - //STENCIL BUFFER - if( m_currentTemplate.StencilData.DataCheck == TemplateDataCheck.Valid ) - { - m_stencilBufferHelper.ReadFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - } - - if( UIUtils.CurrentShaderVersion() > 14202 ) - { - //DEPTH OPTIONS - if( m_currentTemplate.DepthData.ValidZWrite ) - { - m_depthOphelper.ReadZWriteFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - - if( m_currentTemplate.DepthData.ValidZTest ) - { - m_depthOphelper.ReadZTestFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - - if( m_currentTemplate.DepthData.ValidOffset ) - { - m_depthOphelper.ReadOffsetFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - } - - //TAGS - if( UIUtils.CurrentShaderVersion() > 14301 ) - { - if( m_currentTemplate.TagData.DataCheck == TemplateDataCheck.Valid ) - m_tagsHelper.ReadFromString( ref m_currentReadParamIdx, ref nodeParams ); - } - } - catch( Exception e ) - { - Debug.LogException( e, this ); - } - m_containerGraph.CurrentCanvasMode = NodeAvailability.TemplateShader; - m_containerGraph.CurrentPrecision = m_currentPrecisionType; - } - - public override void WriteToString( ref string nodeInfo, ref string connectionsInfo ) - { - base.WriteToString( ref nodeInfo, ref connectionsInfo ); - IOUtils.AddFieldValueToString( ref nodeInfo, m_shaderName ); - IOUtils.AddFieldValueToString( ref nodeInfo, ( m_currentTemplate != null ) ? m_currentTemplate.GUID : string.Empty ); - IOUtils.AddFieldValueToString( ref nodeInfo, ( m_currentTemplate != null ) ? m_currentTemplate.DefaultShaderName : string.Empty ); - - //BLEND MODULE - if( m_currentTemplate.BlendData.ValidBlendMode ) - { - m_blendOpHelper.WriteBlendModeToString( ref nodeInfo ); - } - - if( m_currentTemplate.BlendData.ValidBlendOp ) - { - m_blendOpHelper.WriteBlendOpToString( ref nodeInfo ); - } - - //CULL MODULE - if( m_currentTemplate.CullModeData.DataCheck == TemplateDataCheck.Valid ) - { - m_cullModeHelper.WriteToString( ref nodeInfo ); - } - - //COLOR MASK MODULE - if( m_currentTemplate.ColorMaskData.DataCheck == TemplateDataCheck.Valid ) - { - m_colorMaskHelper.WriteToString( ref nodeInfo ); - } - - //STENCIL BUFFER MODULE - if( m_currentTemplate.StencilData.DataCheck == TemplateDataCheck.Valid ) - { - m_stencilBufferHelper.WriteToString( ref nodeInfo ); - } - - //DEPTH MODULE - if( m_currentTemplate.DepthData.ValidZWrite ) - { - m_depthOphelper.WriteZWriteToString( ref nodeInfo ); - } - - if( m_currentTemplate.DepthData.ValidZTest ) - { - m_depthOphelper.WriteZTestToString( ref nodeInfo ); - } - - if( m_currentTemplate.DepthData.ValidOffset ) - { - m_depthOphelper.WriteOffsetToString( ref nodeInfo ); - } - - //TAGS - if( m_currentTemplate.TagData.DataCheck == TemplateDataCheck.Valid ) - { - m_tagsHelper.WriteToString( ref nodeInfo ); - } - } - - public override void Destroy() - { - base.Destroy(); - m_currentTemplate = null; - m_blendOpHelper = null; - m_cullModeHelper = null; - m_colorMaskHelper.Destroy(); - m_colorMaskHelper = null; - m_stencilBufferHelper.Destroy(); - m_stencilBufferHelper = null; - m_tagsHelper.Destroy(); - m_tagsHelper = null; - - } - - public TemplateData CurrentTemplate { get { return m_currentTemplate; } } - } -} |