void AddEdges(Core.Nodes.Node n) { n.OutputNodes.ForEach(node => { if (!Drawn.Contains($"{n.Name}->{node.Name}")) { var edge = Canvas.AddEdge(n.Name, node.Name); Drawn.Add($"{n.Name}->{node.Name}"); edge.SourceNode.LabelText = $"{n.GetType().Name}\n{n.Name}"; edge.TargetNode.LabelText = $"{node.GetType().Name}\n{node.Name}"; switch (n) { case Core.Nodes.Node input when input.Value == NodeCurrent.High: edge.SourceNode.Attr.FillColor = Microsoft.Msagl.Drawing.Color.PaleVioletRed; break; case Core.Nodes.Node input when input.Value == NodeCurrent.Low: edge.SourceNode.Attr.FillColor = Microsoft.Msagl.Drawing.Color.LightBlue; break; } switch (node) { case Core.Nodes.Node input when input.Value == NodeCurrent.High: edge.TargetNode.Attr.FillColor = Microsoft.Msagl.Drawing.Color.PaleVioletRed; break; case Core.Nodes.Node input when input.Value == NodeCurrent.Low: edge.TargetNode.Attr.FillColor = Microsoft.Msagl.Drawing.Color.LightBlue; break; } } AddEdges(node); }); }