internal void AdjustGraph(GraphSelector selector) { var nodes = new HashSet <Node>(); if (selector.HitNode != null) { nodes.Add(selector.HitNode); } if (selector.HitEdge != null) { nodes.Add(selector.HitEdge.Node1); nodes.Add(selector.HitEdge.Node2); } foreach (var node in selector.Nodes) { nodes.Add(node); } foreach (var edge in selector.Edges) { nodes.Add(edge.Node1); nodes.Add(edge.Node2); } foreach (var e in selector.Points) { var edge = e.Key; nodes.Add(edge.Node1); nodes.Add(edge.Node2); } ExpandNeighborhood(); AdjustNodes(nodes); #region ExpandNeighborhood ======================================= void ExpandNeighborhood() { for (int i = 0; i < 2; i++) { var ndList = nodes.ToArray(); foreach (var nd in ndList) { if (Node_Edges.TryGetValue(nd, out List <Edge> egList)) { foreach (var eg in egList) { nodes.Add(eg.Node1); nodes.Add(eg.Node2); } } } } } #endregion }
private void AdjustNode(Node node) { if (!Node_Edges.TryGetValue(node, out List <Edge> edges)) { return; } var N = edges.Count; if (N == 0) { return; } var E = new ((float x, float y)bend, Node other, int order, Target targ, Attach atch, Direction odir)[N]; // primary edge data