private void HandleRightMouseButtonInput(GameTime gameTime, MouseState mouseState) { if (mouseState.RightButton == ButtonState.Pressed) { if ((mouseActivityState & MouseActivityState.MousePan) != MouseActivityState.MousePan) //Mouse down event { mouseActivityState |= MouseActivityState.MousePan; mousePanStart = GetNormalizedMouseCoordinates(mouseState); } else //Mouse move while middle down { mousePanEnd = GetNormalizedMouseCoordinates(mouseState); var panAmount = (mousePanStart - mousePanEnd) * this.PanSpeed; if (panAmount.LengthSquared() > 0) { this.MoveTo(panAmount); mousePanStart = mousePanEnd; } } } else { mouseActivityState &= ~MouseActivityState.MousePan; } }
private void HandleLeftMouseButtonInput(GameTime gameTime, MouseState mouseState) { if (mouseState.LeftButton == ButtonState.Pressed) { if ((mouseActivityState & MouseActivityState.MouseRotate) != MouseActivityState.MouseRotate) //Mouse down event { mouseActivityState |= MouseActivityState.MouseRotate; var mouseVector = GetMouseArcBallVector(mouseState); mouseRotationStart = object3D.GetMouseProjectionOnArcBall(mouseVector, ArcBallOrigin); } else //Mouse move while left down { var mouseVector = GetMouseArcBallVector(mouseState); mouseRotationEnd = object3D.GetMouseProjectionOnArcBall(mouseVector, ArcBallOrigin); var rotatedMouseRotationEnd = object3D.Rotate(mouseRotationStart, mouseRotationEnd, this.ArcBallOrigin, this.RotateSpeed); if (rotatedMouseRotationEnd != null) { mouseRotationEnd = rotatedMouseRotationEnd.Value; mouseRotationStart = mouseRotationEnd; } } } else { mouseActivityState &= ~MouseActivityState.MouseRotate; } }
private void HandleMiddleMouseButtonInput(GameTime gameTime, MouseState mouseState) { if (mouseState.MiddleButton == ButtonState.Pressed) { if ((mouseActivityState & MouseActivityState.MouseZoom) != MouseActivityState.MouseZoom) //Mouse down event { mouseActivityState |= MouseActivityState.MouseZoom; mouseZoomStart = mouseState.Y; } else //Mouse move while middle down { mouseZoomEnd = mouseState.Y; var zoomFactor = (float)Math.Pow(MaxZoom, (mouseZoomEnd - mouseZoomStart) / screenHeight) * this.ZoomSpeed; if (Math.Abs(zoomFactor - 0) > 1E-3) { object3D.Zoom(zoomFactor, ArcBallOrigin); mouseZoomStart = mouseZoomEnd; } } } else { mouseActivityState &= ~MouseActivityState.MouseZoom; } }
private void HandleRightMouseButtonInput(GameTime gameTime, MouseState mouseState) { if (mouseState.RightButton == ButtonState.Pressed) { if ((mouseActivityState & MouseActivityState.MousePan) != MouseActivityState.MousePan) //Mouse down event { mouseActivityState |= MouseActivityState.MousePan; mousePanStart = GetNormalizedMouseCoordinates(mouseState); } else //Mouse move while middle down { mousePanEnd = GetNormalizedMouseCoordinates(mouseState); var panAmount = (mousePanStart - mousePanEnd) * this.PanSpeed; if (panAmount.LengthSquared() > 0) { this.MoveTo(panAmount); mousePanStart = mousePanEnd; } } } else mouseActivityState &= ~MouseActivityState.MousePan; }
private void HandleMiddleMouseButtonInput(GameTime gameTime, MouseState mouseState) { if (mouseState.MiddleButton == ButtonState.Pressed) { if ((mouseActivityState & MouseActivityState.MouseZoom) != MouseActivityState.MouseZoom) //Mouse down event { mouseActivityState |= MouseActivityState.MouseZoom; mouseZoomStart = mouseState.Y; } else //Mouse move while middle down { mouseZoomEnd = mouseState.Y; var zoomFactor = (float) Math.Pow(MaxZoom, (mouseZoomEnd - mouseZoomStart) / screenHeight) * this.ZoomSpeed; if (Math.Abs(zoomFactor - 0) > 1E-3) { object3D.Zoom(zoomFactor, ArcBallOrigin); mouseZoomStart = mouseZoomEnd; } } } else mouseActivityState &= ~MouseActivityState.MouseZoom; }
private void HandleLeftMouseButtonInput(GameTime gameTime, MouseState mouseState) { if (mouseState.LeftButton == ButtonState.Pressed) { if ((mouseActivityState & MouseActivityState.MouseRotate) != MouseActivityState.MouseRotate) //Mouse down event { mouseActivityState |= MouseActivityState.MouseRotate; var mouseVector = GetMouseArcBallVector(mouseState); mouseRotationStart = object3D.GetMouseProjectionOnArcBall(mouseVector, ArcBallOrigin); } else //Mouse move while left down { var mouseVector = GetMouseArcBallVector(mouseState); mouseRotationEnd = object3D.GetMouseProjectionOnArcBall(mouseVector, ArcBallOrigin); var rotatedMouseRotationEnd = object3D.Rotate(mouseRotationStart, mouseRotationEnd, this.ArcBallOrigin, this.RotateSpeed); if (rotatedMouseRotationEnd != null) { mouseRotationEnd = rotatedMouseRotationEnd.Value; mouseRotationStart = mouseRotationEnd; } } } else mouseActivityState &= ~MouseActivityState.MouseRotate; }