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,10 @@ public override void Update()
2727
2828 if ( ! Playable . IsValid ( ) )
2929 {
30+ foreach ( var port in InternalOutputPorts )
31+ {
32+ port . portColor = GraphTool . GetPortInvalidColor ( 0 ) ;
33+ }
3034 return ;
3135 }
3236
@@ -36,8 +40,13 @@ public override void Update()
3640 InternalInputs [ i ] . Node . RemoveFlag ( NodeFlag . Active ) ;
3741 }
3842
43+ // diff child nodes
3944 for ( int i = 0 ; i < Playable . GetInputCount ( ) ; i ++ )
4045 {
46+ // update port color
47+ var inputWeight = Playable . GetInputWeight ( i ) ;
48+ InternalInputPorts [ i ] . portColor = GraphTool . GetPortColor ( Playable , inputWeight ) ;
49+
4150 var inputPlayable = Playable . GetInput ( i ) ;
4251 if ( ! inputPlayable . IsValid ( ) )
4352 {
@@ -47,7 +56,9 @@ public override void Update()
4756 var childNodeIndex = FindChildPlayableNode ( inputPlayable ) ;
4857 if ( childNodeIndex >= 0 )
4958 {
50- InternalInputs [ i ] . Node . AddFlag ( NodeFlag . Active ) ;
59+ var input = InternalInputs [ i ] ;
60+ input . Node . AddFlag ( NodeFlag . Active ) ;
61+ InternalInputs [ i ] = input . Copy ( input , i ) ;
5162 continue ;
5263 }
5364
@@ -60,12 +71,15 @@ public override void Update()
6071 var selfInputPort = InternalInputPorts [ i ] ;
6172 var edge = selfInputPort . ConnectTo ( inputPlayableNodeOutputPort ) ;
6273 Container . AddElement ( edge ) ;
63- InternalInputs . Add ( new NodeInput ( edge , inputPlayableNode ) ) ;
74+ InternalInputs . Add ( new NodeInput ( edge , inputPlayableNode , i ) ) ;
6475 }
6576
77+ // update child nodes
6678 for ( int i = InternalInputs . Count - 1 ; i >= 0 ; i -- )
6779 {
6880 var input = InternalInputs [ i ] ;
81+
82+ // remove inactive child node
6983 if ( ! input . Node . CheckFlag ( NodeFlag . Active ) )
7084 {
7185 Container . RemoveElement ( input . Edge ) ;
@@ -75,6 +89,11 @@ public override void Update()
7589 continue ;
7690 }
7791
92+ // update port color
93+ var inputWeight = Playable . GetInputWeight ( input . PortIndex ) ;
94+ input . Node . OutputPorts [ 0 ] . portColor = GraphTool . GetPortColor ( Playable , inputWeight ) ;
95+ input . Edge . UpdateEdgeControl ( ) ;
96+
7897 InternalInputs [ i ] . Node . Update ( ) ;
7998 }
8099 }
@@ -105,7 +124,7 @@ private void CreatePorts()
105124 {
106125 var inputPort = InstantiatePort < Playable > ( Direction . Input ) ;
107126 inputPort . portName = $ "Input { i } ";
108- inputPort . portColor = Color . white ;
127+ inputPort . portColor = GraphTool . GetPortColor ( Playable , Playable . GetInputWeight ( i ) ) ;
109128 inputContainer . Add ( inputPort ) ;
110129 InternalInputPorts . Add ( inputPort ) ;
111130 }
@@ -114,7 +133,7 @@ private void CreatePorts()
114133 {
115134 var outputPort = InstantiatePort < Playable > ( Direction . Output ) ;
116135 outputPort . portName = $ "Output { i } ";
117- outputPort . portColor = Color . white ;
136+ outputPort . portColor = GraphTool . GetPortColor ( Playable , 1 ) ;
118137 outputContainer . Add ( outputPort ) ;
119138 InternalOutputPorts . Add ( outputPort ) ;
120139 }
0 commit comments