public override void OnMouseRightDown(Vector2d pos) { int closestIndex = -1; double closestDist = 100000; for (int i = 0; i < controlPoints.Count; i++) { var dist = GameRenderer.Distance(ScreenToGameCoords(pos), controlPoints[i]); if (dist < closestDist) { closestDist = dist; closestIndex = i; } } if (closestIndex >= 0 && closestDist < nodeSize) { controlPoints.RemoveAt(closestIndex); } base.OnMouseRightDown(pos); }
public override void OnMouseDown(Vector2d pos) { Active = true; var gamepos = ScreenToGameCoords(pos); if (EnableSnap) { using (var trk = game.Track.CreateTrackReader()) { var snap = TrySnapPoint(trk, gamepos, out bool success); if (success) { _start = snap; Snapped = true; } else { _start = gamepos; Snapped = false; } } } else { _start = gamepos; Snapped = false; } _addflip = UI.InputUtils.Check(UI.Hotkey.LineToolFlipLine); _end = _start; int closestIndex = -1; double closestDist = 100000; for (int i = 0; i < controlPoints.Count; i++) { var dist = GameRenderer.Distance(ScreenToGameCoords(pos), controlPoints[i]); if (dist < closestDist) { closestDist = dist; closestIndex = i; } } if (closestIndex >= 0 && closestDist < nodeSize) { moving = true; pointToMove = closestIndex; } else { moving = false; pointToMove = -1; if (controlPoints.Count < 20) { controlPoints.Add(_end); } } game.Invalidate(); base.OnMouseDown(pos); }