public override void Update(GameTime gameTime) { if (!_mouseComponent.IsMouseOwner(this)) { return; } ChangeSelectionMode(); _currentMousePos = _mouseComponent.Position(); if (_mouseComponent.IsMouseButtonPressed(MouseButton.Left)) { _startDrag = _mouseComponent.Position(); _isMouseDown = true; if (_mouseComponent.MouseOwner != this) { _mouseComponent.MouseOwner = this; } } if (_mouseComponent.IsMouseButtonReleased(MouseButton.Left)) { if (_isMouseDown) { var selectionRectangle = CreateSelectionRectangle(_startDrag, _currentMousePos); var rectArea = RectArea(selectionRectangle); if (rectArea > 8) { SelectFromRectangle(selectionRectangle, _keyboardComponent.IsKeyDown(Keys.LeftShift), _keyboardComponent.IsKeyDown(Keys.LeftControl)); } else { SelectFromPoint(_currentMousePos, _keyboardComponent.IsKeyDown(Keys.LeftShift), _keyboardComponent.IsKeyDown(Keys.LeftControl)); } } else { SelectFromPoint(_currentMousePos, _keyboardComponent.IsKeyDown(Keys.LeftShift), _keyboardComponent.IsKeyDown(Keys.LeftControl)); } _isMouseDown = false; } if (!_isMouseDown) { if (_mouseComponent.MouseOwner == this) { _mouseComponent.MouseOwner = null; _mouseComponent.ClearStates(); return; } } }