/// <summary> /// Inserts a node and creates edges around the local points of the cluster it the /// node we try to insert belongs to at each level /// </summary> private static void InsertStalHEdges(HierarchicalMap map, int nodeId) { var abstractNodeId = map.AbsNodeIds[nodeId]; var nodeInfo = map.AbstractGraph.GetNodeInfo(abstractNodeId); var oldLevel = nodeInfo.Level; nodeInfo.Level = map.MaxLevel; for (var level = oldLevel + 1; level <= map.MaxLevel; level++) { map.SetCurrentLevel(level - 1); map.SetCurrentCluster(nodeInfo.Position, level); var clusterRectangle = map.GetCurrentClusterRectangle(); var currentClusterY0 = clusterRectangle.Origin.Y; var currentClusterY1 = clusterRectangle.Origin.Y + clusterRectangle.Size.Height; var currentClusterX0 = clusterRectangle.Origin.X; var currentClusterX1 = clusterRectangle.Origin.X + clusterRectangle.Size.Width; for (var y = currentClusterY0; y <= currentClusterY1; y++) for (var x = currentClusterX0; x <= currentClusterX1; x++) { var nodeId2 = y * map.Width + x; var abstractNodeId2 = map.AbsNodeIds[nodeId2]; AddEdgesBetweenAbstractNodes(map, abstractNodeId, abstractNodeId2, level); } } }