private void selectActionMouseDown(MouseEventArgs e) { currentAction = ActionType.Select; double selectionWorldDistance = selectionPixelDistance / (zoomPercent / 100); double pointDistance = selectionWorldDistance; LineGraph closestPointsLine = null; WorldPoint closestPoint = null; double lineDistance = selectionWorldDistance; LineGraph closestLine = null; foreach (LineGraph line in World.Lines) { bool isLine; double distance; int index = line.Grab(mouseDownWorldX, mouseDownWorldY, selectionWorldDistance, out distance, out isLine); if (index != -1) { if (isLine) { if (distance < lineDistance) { lineDistance = distance; closestLine = line; } } else { if (distance < pointDistance) { pointDistance = distance; closestPoint = line[index]; closestPointsLine = line; } } } } if (closestPoint != null) { if (!selection.Contains(closestPoint)) { selection.Clear(); selectionIndices.Clear(); selection.Add(closestPoint); selectionIndices.Add(closestPoint.getIndex()); } currentAction = ActionType.MoveSelection; } else if (closestLine != null) { selection.Clear(); selectionIndices.Clear(); for (int i = 0; i < closestLine.Count; i++) { selection.Add(closestLine[i]); selectionIndices.Add(i); } currentAction = ActionType.MoveSelection; } }