static void RouteEdges(LgLayoutSettings lgLayoutSettings, GeometryGraph tmpGraphForRouting, LgData lgData, LgLevel level) { int routedEdges = 0; Console.WriteLine("\nrouting for level {0}", level.ZoomLevel); var router = new SplineRouter(tmpGraphForRouting, lgLayoutSettings.EdgeRoutingSettings.Padding, lgLayoutSettings.EdgeRoutingSettings.PolylinePadding, Math.PI / 6, null) { RouteMultiEdgesAsBundles = false, UseEdgeLengthMultiplier = true, UsePolylineEndShortcutting = false, UseInnerPolylingShortcutting = false, // LineSweeperPorts = GetLineSweeperPorts(tmpGraphForRouting, tileSize), AllowedShootingStraightLines = false, ContinueOnOverlaps = true, CacheCornersForSmoothing = true, ReplaceEdgeByRails = e => { routedEdges++; if (routedEdges % 1000 == 0) { Console.Write("."); } level.RegisterRailsOfEdge(lgData.GeometryEdgesToLgEdgeInfos[e]); }, Bidirectional = true }; //new BundlingSettings {KeepOverlaps = true, EdgeSeparation = 0, StopAfterShortestPaths = true}); router.Run(); level.CreateRailTree(); foreach (var edge in tmpGraphForRouting.Edges) { level.FillRailDictionaryForEdge(edge); edge.Curve = null; } // level.RunLevelStatistics(lgData.GeometryNodesToLgNodeInfos.Where(e=>e.Value.ZoomLevel<=level.ZoomLevel).Select(p=>p.Key)); }