123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using UnityEngine;
- namespace AmplifyShaderEditor
- {
- public class OutputNode : SignalGeneratorNode
- {
- public static int LOD_SUBSHADER_VERSION = 17200;
- [SerializeField]
- protected bool m_isMainOutputNode = false;
- [SerializeField]
- protected int m_lodIndex = -1;
- public OutputNode() : base() { }
- public OutputNode( int uniqueId, float x, float y, float width, float height ) : base( uniqueId, x, y, width, height ) { }
- public override void ResetNodeData()
- {
- base.ResetNodeData();
- m_graphDepth = -1;
- }
- public virtual void SetupNodeCategories()
- {
- ContainerGraph.ResetNodesData();
- //int count = m_inputPorts.Count;
- //for( int i = 0; i < count; i++ )
- //{
- // if( m_inputPorts[ i ].IsConnected )
- // {
- // NodeData nodeData = new NodeData( m_inputPorts[ i ].Category );
- // ParentNode node = m_inputPorts[ i ].GetOutputNode();
- // node.PropagateNodeData( nodeData, ref collector );
- // }
- //}
- }
- public override void WriteToString( ref string nodeInfo, ref string connectionsInfo )
- {
- base.WriteToString( ref nodeInfo, ref connectionsInfo );
- IOUtils.AddFieldValueToString( ref nodeInfo, m_isMainOutputNode );
- IOUtils.AddFieldValueToString( ref nodeInfo, m_lodIndex );
- }
- public override void ReadFromString( ref string[] nodeParams )
- {
- base.ReadFromString( ref nodeParams );
- m_isMainOutputNode = Convert.ToBoolean( GetCurrentParam( ref nodeParams ) );
- if( UIUtils.CurrentShaderVersion() > LOD_SUBSHADER_VERSION )
- {
- m_lodIndex = Convert.ToInt32( GetCurrentParam( ref nodeParams ) );
- }
- if( IsLODMainMasterNode && !ContainerGraph.IsDuplicating )
- {
- ContainerGraph.AssignMasterNode( this, true );
- }
- }
- public override void AfterDuplication()
- {
- base.AfterDuplication();
- m_isMainOutputNode = false;
- }
-
- public bool IsMainOutputNode
- {
- get { return m_isMainOutputNode; }
- set
- {
- if( value != m_isMainOutputNode )
- {
- m_isMainOutputNode = value;
- if( m_isMainOutputNode )
- {
- GenerateSignalPropagation();
- }
- else
- {
- GenerateSignalInibitor();
- }
- }
- }
- }
- public int LODIndex { get { return m_lodIndex; } set { m_lodIndex = value; } }
- public bool IsLODMainMasterNode { get { return m_isMainOutputNode && m_lodIndex == -1; } }
- }
- }
|