private void UIElement_OnMouseMove(object sender, MouseEventArgs e) { // test rmb pressing if (e.RightButton == MouseButtonState.Pressed) { // test shift holding if (shiftPressed) { var position = e.GetPosition(this); var deltaX = currentPositionX - position.X; var deltaY = currentPositionY - position.Y; Extensions.PanDirection panDirection = Extensions.PanDirection.None; if (Math.Abs(deltaX) > Math.Abs(deltaY)) { if (deltaX > 0) { panDirection = Extensions.PanDirection.Right; } if (deltaX < 0) { panDirection = Extensions.PanDirection.Left; } } else { if (deltaY > 0) { panDirection = Extensions.PanDirection.Up; } if (deltaY < 0) { panDirection = Extensions.PanDirection.Down; } } _camera.Pan(panDirection); } else { var position = e.GetPosition(this); var deltaX = currentPositionX - position.X; var deltaY = currentPositionY - position.Y; Extensions.PanDirection panDirection = Extensions.PanDirection.None; if (Math.Abs(deltaX) > Math.Abs(deltaY)) { if (deltaX > 0) { panDirection = Extensions.PanDirection.Right; } if (deltaX < 0) { panDirection = Extensions.PanDirection.Left; } } else { if (deltaY > 0) { panDirection = Extensions.PanDirection.Up; } if (deltaY < 0) { panDirection = Extensions.PanDirection.Down; } } //currentPositionX = e.GetPosition(this).X; _camera.Rotate(panDirection, _properties.SceneBbox); } } else { var position = e.GetPosition(this); currentPositionX = position.X; currentPositionY = position.Y; } }