public InputMouseEvent(MouseEvent type, InputMouseEvent parent) : base(parent) { EventType = type; Button = parent.Button; _clicks = parent._clicks; X = parent.X; Y = parent.Y; _data = parent._data; }
private void OnMouseDown(InputMouseEvent e) { if (e.Button == MouseButton.Left) { _leftButtonPressed = true; LeftDragPosition = MousePosition; } _lastMouseDown = e; _lastMouseDownTime = _time; AddEvent(e); }
private void OnMouseMove(InputMouseEvent e) { MousePosition = e.Position; AddEvent(new InputMouseEvent(MouseEvent.Move, e)); if (!_mouseIsDragging && _lastMouseDown != null) { if (DistanceBetweenPoints(_lastMouseDown.Position, e.Position, MOUSE_DRAG_BEGIN_DISTANCE)) { AddEvent(new InputMouseEvent(MouseEvent.DragBegin, e)); _mouseIsDragging = true; } } }
private void OnMouseUp(InputMouseEvent e) { if (_mouseIsDragging) { AddEvent(new InputMouseEvent(MouseEvent.DragEnd, e)); _mouseIsDragging = false; } else { if (_lastMouseDown != null) { if (!DistanceBetweenPoints(_lastMouseDown.Position, e.Position, MOUSE_CLICK_MAX_DELTA)) { AddEvent(new InputMouseEvent(MouseEvent.Click, e)); if (_time - _lastMouseClickTime <= MOUSE_DOUBLE_CLICK_TIME && _lastMouseClick != null && !DistanceBetweenPoints(_lastMouseClick.Position, e.Position, MOUSE_CLICK_MAX_DELTA)) { _lastMouseClickTime = 0f; AddEvent(new InputMouseEvent(MouseEvent.DoubleClick, e)); } else { _lastMouseClickTime = _time; _lastMouseClick = e; } } } } if (e.Button == MouseButton.Left) { _leftButtonPressed = false; } AddEvent(new InputMouseEvent(MouseEvent.Up, e)); _lastMouseDown = null; }
private void OnMouseWheel(InputMouseEvent e) { AddEvent(e); AddEvent(new InputMouseEvent(ConvertWheelDirection(e.X, e.Y), e)); }