public static void Main(string[] args) { Console.WriteLine("Hello World!"); // generateLocations(); // generateRelations(); var pointRelationships = JsonSerializer.Deserialize <IReadOnlyList <PointRelationship> >(File.ReadAllText(pointRelationshipPath)); var nodeConnector = new NodeConnector(); var sw = new Stopwatch(); Console.WriteLine("connect start"); sw.Start(); var pointNodes = nodeConnector.Connect(pointRelationships); sw.Stop(); Console.WriteLine($"connect stop: {sw.ElapsedMilliseconds}"); var distanceCalculator = new DistanceCalculator(); string source = "1520000"; string target = "2610012"; Console.WriteLine("calculate start"); sw.Reset(); sw.Start(); Console.WriteLine($"{source}~{target}: {distanceCalculator.CalculateDistance(pointNodes, source, target)}m"); sw.Stop(); Console.WriteLine($"calculate stop: {sw.ElapsedMilliseconds}"); }
/// <summary> /// Handle mouse up /// </summary> protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (e.Button == MouseButtons.Left && EditMode != EGraphEditMode.SelectingBox) { IElement clickedElement = FindElementAt(m_transformed_location, true); if (clickedElement != null) { System.Diagnostics.Debug.Print(clickedElement.ToString()); clickedElement.As <IMouseUpHandler>()?.OnMouseUp(e); if (clickedElement is Node node) { if (node.Owner is NodeGroup group) { if (!group.Bounds.FullyContains(node.Bounds)) { group.RemoveNode(node); } } } else if (clickedElement is NodeConnector) { NodeConnector from = SelectedElement as NodeConnector; if (from != null) { NodeConnector to = (NodeConnector)clickedElement; from.Connect(to); to.Connect(from); } } else if (FindElementAt <NodeGroup>(m_transformed_location, true) is NodeGroup group) { foreach (IElement element in Selection) { if (element is Node elementNode) { if (group.Bounds.FullyContains(elementNode.Bounds)) { group.AddNode(elementNode); } } } } else { Selection.UnselectAll(); } } else { Selection.UnselectAll(); } } m_dragElement = false; SetEditMode(EGraphEditMode.Idle); }