1- using System ;
1+ using GBG . PlayableGraphMonitor . Editor . Utility ;
2+ using System ;
23using UnityEditor . Experimental . GraphView ;
3- using UnityEngine ;
44using UnityEngine . Playables ;
55
66namespace GBG . PlayableGraphMonitor . Editor . Node
@@ -27,6 +27,7 @@ public override void Update()
2727
2828 if ( ! Playable . IsValid ( ) )
2929 {
30+ style . backgroundColor = GraphTool . GetNodeInvalidColor ( ) ;
3031 return ;
3132 }
3233
@@ -36,8 +37,13 @@ public override void Update()
3637 InternalInputs [ i ] . Node . RemoveFlag ( NodeFlag . Active ) ;
3738 }
3839
40+ // diff child nodes
3941 for ( int i = 0 ; i < Playable . GetInputCount ( ) ; i ++ )
4042 {
43+ // update self port color
44+ var inputWeight = Playable . GetInputWeight ( i ) ;
45+ InternalInputPorts [ i ] . portColor = GraphTool . GetPortColor ( inputWeight ) ;
46+
4147 var inputPlayable = Playable . GetInput ( i ) ;
4248 if ( ! inputPlayable . IsValid ( ) )
4349 {
@@ -47,7 +53,9 @@ public override void Update()
4753 var childNodeIndex = FindChildPlayableNode ( inputPlayable ) ;
4854 if ( childNodeIndex >= 0 )
4955 {
50- InternalInputs [ i ] . Node . AddFlag ( NodeFlag . Active ) ;
56+ var input = InternalInputs [ i ] ;
57+ input . Node . AddFlag ( NodeFlag . Active ) ;
58+ InternalInputs [ i ] = input . Copy ( input , i ) ;
5159 continue ;
5260 }
5361
@@ -60,12 +68,15 @@ public override void Update()
6068 var selfInputPort = InternalInputPorts [ i ] ;
6169 var edge = selfInputPort . ConnectTo ( inputPlayableNodeOutputPort ) ;
6270 Container . AddElement ( edge ) ;
63- InternalInputs . Add ( new NodeInput ( edge , inputPlayableNode ) ) ;
71+ InternalInputs . Add ( new NodeInput ( edge , inputPlayableNode , i ) ) ;
6472 }
6573
74+ // update child nodes
6675 for ( int i = InternalInputs . Count - 1 ; i >= 0 ; i -- )
6776 {
6877 var input = InternalInputs [ i ] ;
78+
79+ // remove inactive child node
6980 if ( ! input . Node . CheckFlag ( NodeFlag . Active ) )
7081 {
7182 Container . RemoveElement ( input . Edge ) ;
@@ -75,6 +86,11 @@ public override void Update()
7586 continue ;
7687 }
7788
89+ // update child port color
90+ var inputWeight = Playable . GetInputWeight ( input . PortIndex ) ;
91+ input . Node . OutputPorts [ 0 ] . portColor = GraphTool . GetPortColor ( inputWeight ) ;
92+ input . Edge . UpdateEdgeControl ( ) ;
93+
7894 InternalInputs [ i ] . Node . Update ( ) ;
7995 }
8096 }
@@ -105,7 +121,7 @@ private void CreatePorts()
105121 {
106122 var inputPort = InstantiatePort < Playable > ( Direction . Input ) ;
107123 inputPort . portName = $ "Input { i } ";
108- inputPort . portColor = Color . white ;
124+ inputPort . portColor = GraphTool . GetPortColor ( Playable . GetInputWeight ( i ) ) ;
109125 inputContainer . Add ( inputPort ) ;
110126 InternalInputPorts . Add ( inputPort ) ;
111127 }
@@ -114,7 +130,7 @@ private void CreatePorts()
114130 {
115131 var outputPort = InstantiatePort < Playable > ( Direction . Output ) ;
116132 outputPort . portName = $ "Output { i } ";
117- outputPort . portColor = Color . white ;
133+ outputPort . portColor = GraphTool . GetPortColor ( 1 ) ;
118134 outputContainer . Add ( outputPort ) ;
119135 InternalOutputPorts . Add ( outputPort ) ;
120136 }
0 commit comments