private void CheckMouseDragged(Func <MouseState, ButtonState> getButtonState, MouseButton button)
        {
            if ((getButtonState(_currentState) == ButtonState.Pressed) &&
                (getButtonState(_previousState) == ButtonState.Pressed))
            {
                var args = new MouseEventArgs(ViewportAdapter, _gameTime.TotalGameTime, _previousState, _currentState, button);

                if (_mouseDownArgs.Button == args.Button)
                {
                    if (_dragging)
                    {
                        MouseDrag?.Invoke(this, args);
                    }
                    else
                    {
                        // Only start to drag based on DragThreshold
                        var clickMovement = DistanceBetween(args.Position, _mouseDownArgs.Position);

                        if (clickMovement > DragThreshold)
                        {
                            _dragging = true;
                            MouseDragStart?.Invoke(this, args);
                        }
                    }
                }
            }
        }
        private void _mouseListener_MouseDragStart(object sender, MouseEventArgs e)
        {
            _scene?.FireMouseDragStart(e);
            MouseDragStart?.Invoke(sender, e);
#if DEBUG
            Logger.Log("Mouse drag start.");
#endif
        }
 internal void FireMouseDragStart(MouseEventArgs e)
 {
     OnMouseDragStart(e);
     MouseDragStart?.Invoke(this, e);
 }