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