void EdgeConnectionCallback(SerializableEdge edge) { if (edge.inputPort == inputPorts[0]) { // Update the loop start: var newLoopStart = FindInDependencies(n => n is ForStart) as ForStart; if (newLoopStart != loopStart) { UnregisterLoopStart(); loopStart = newLoopStart; RegisterLoopStart(); } else { loopStart = newLoopStart; } if (loopStart != null) { loopStartGUID = loopStart.GUID; } UpdateAllPorts(); } else if (loopStart != null && edge.inputPort == loopStart.inputPorts[0]) { UpdateAllPorts(); } }
void RegisterLoopStart() { if (loopStart == null && !String.IsNullOrEmpty(loopStartGUID) && graph.nodesPerGUID.ContainsKey(loopStartGUID)) { loopStart = graph.nodesPerGUID[loopStartGUID] as ForStart; } if (loopStart != null) { loopStart.onAfterEdgeConnected += EdgeConnectionCallback; loopStart.onAfterEdgeDisconnected += EdgeConnectionCallback; } }