public void Add(GConnection conn) { if (!m_Connections.ContainsKey(conn.Start)) { m_Connections.Add(conn.Start, new Dictionary <GNode, List <GConnection> >()); } if (!m_ConnectionsInverse.ContainsKey(conn.End)) { m_ConnectionsInverse.Add(conn.End, new Dictionary <GNode, bool>()); } if (!m_Connections[conn.Start].ContainsKey(conn.End)) { m_Connections[conn.Start].Add(conn.End, new List <GConnection>()); } bool unique = true; foreach (GConnection c in m_Connections[conn.Start][conn.End]) { if (c.StartPort == conn.StartPort && c.EndPort == conn.EndPort) { unique = false; break; } } if (unique) { m_Connections[conn.Start][conn.End].Add(conn); } if (!m_ConnectionsInverse[conn.End].ContainsKey(conn.Start)) { m_ConnectionsInverse[conn.End].Add(conn.Start, true); } }
public void MouseUp(VisualTool Tool) { if (Tool == VisualTool.Connect && Connecting != null) { if (Connecting.Start != EndPoint && Connecting.End != EndPoint) { m_Connections.Add(Connecting); } Connecting = null; } }
public void Load(Project project, Process process) { m_Process = process; foreach (Variable var in m_Process.VarsList) { m_GNodes.Add(var.Name, new GNodeVariable(var, this)); } foreach (Node node in m_Process.NodesList) { GNode n; if (node.NodeIsSubprocess) { n = new GNodeSubprocess(node, this); } else { n = new GNodeFunction(node, this); } n.Name = node.Name; m_GNodes.Add(node.Name, n); } foreach (Node node in m_Process.NodesList) { AddConnections(node); foreach (string gnodename in node.NextNodesList) { Node gto = m_Process.FindNode(gnodename); if (gto != null) { GConnection c = new GConnection(m_GNodes[node.Name], m_GNodes[gto.Name], this); m_Connections.Add(c); } } } foreach (Variable gvar in m_Process.VarsList) { AddConnections(gvar); } FindBoundingBox(); }
public void Remove(GConnection conn) { if (m_Connections.ContainsKey(conn.Start)) { if (m_Connections[conn.Start].ContainsKey(conn.End)) { if (m_Connections[conn.Start][conn.End].Count <= 1) { m_Connections[conn.Start].Remove(conn.End); if (m_ConnectionsInverse.ContainsKey(conn.End)) { m_ConnectionsInverse[conn.End].Remove(conn.Start); } } else { m_Connections[conn.Start][conn.End].Remove(conn); } } } }
private void AddConnections(Element gobj) { string[] connections = gobj.Meta["connections"].Split(';'); foreach (string connection in connections) { string[] parameters = connection.Split(','); if (parameters.Length != 3) { continue; } string nodename = parameters[0]; string fromPort = parameters[1]; string toPort = parameters[2]; if (m_GNodes.ContainsKey(nodename)) { GConnection c = new GConnection(m_GNodes[gobj.Name], m_GNodes[nodename], fromPort, toPort, this); m_Connections.Add(c); } } }