/// <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);
}
}
}