internal static void MouseMovement()
{
if (MouseButton == 0) return;
currentMouseState = Mouse.GetState();
if (currentMouseState != previousMouseState)
{
if (MouseButton == 1)
{
World.AbsoluteCameraDirection = MouseCameraDirection;
World.AbsoluteCameraUp = MouseCameraUp;
World.AbsoluteCameraSide = MouseCameraSide;
{
double dx = 0.0025 * (double)(previousMouseState.X - currentMouseState.X);
double cosa = Math.Cos(dx);
double sina = Math.Sin(dx);
World.Rotate(ref World.AbsoluteCameraDirection.X, ref World.AbsoluteCameraDirection.Y, ref World.AbsoluteCameraDirection.Z, 0.0, 1.0, 0.0, cosa, sina);
World.Rotate(ref World.AbsoluteCameraUp.X, ref World.AbsoluteCameraUp.Y, ref World.AbsoluteCameraUp.Z, 0.0, 1.0, 0.0, cosa, sina);
World.Rotate(ref World.AbsoluteCameraSide.X, ref World.AbsoluteCameraSide.Y, ref World.AbsoluteCameraSide.Z, 0.0, 1.0, 0.0, cosa, sina);
}
{
double dy = 0.0025 * (double)(previousMouseState.Y - currentMouseState.Y);
double cosa = Math.Cos(dy);
double sina = Math.Sin(dy);
World.Rotate(ref World.AbsoluteCameraDirection.X, ref World.AbsoluteCameraDirection.Y, ref World.AbsoluteCameraDirection.Z, World.AbsoluteCameraSide.X, World.AbsoluteCameraSide.Y, World.AbsoluteCameraSide.Z, cosa, sina);
World.Rotate(ref World.AbsoluteCameraUp.X, ref World.AbsoluteCameraUp.Y, ref World.AbsoluteCameraUp.Z, World.AbsoluteCameraSide.X, World.AbsoluteCameraSide.Y, World.AbsoluteCameraSide.Z, cosa, sina);
}
ReducedMode = false;
}
else if(MouseButton == 2)
{
World.AbsoluteCameraPosition = MouseCameraPosition;
double dx = -0.025 * (double)(currentMouseState.X - previousMouseState.X);
World.AbsoluteCameraPosition.X += dx * World.AbsoluteCameraSide.X;
World.AbsoluteCameraPosition.Y += dx * World.AbsoluteCameraSide.Y;
World.AbsoluteCameraPosition.Z += dx * World.AbsoluteCameraSide.Z;
double dy = 0.025 * (double)(currentMouseState.Y - previousMouseState.Y);
World.AbsoluteCameraPosition.X += dy * World.AbsoluteCameraUp.X;
World.AbsoluteCameraPosition.Y += dy * World.AbsoluteCameraUp.Y;
World.AbsoluteCameraPosition.Z += dy * World.AbsoluteCameraUp.Z;
ReducedMode = false;
}
else
{
World.AbsoluteCameraPosition = MouseCameraPosition;
double dx = -0.025 * (double)(currentMouseState.X - previousMouseState.X);
World.AbsoluteCameraPosition.X += dx * World.AbsoluteCameraSide.X;
World.AbsoluteCameraPosition.Y += dx * World.AbsoluteCameraSide.Y;
World.AbsoluteCameraPosition.Z += dx * World.AbsoluteCameraSide.Z;
double dz = -0.025 * (double)(currentMouseState.Y - previousMouseState.Y);
World.AbsoluteCameraPosition.X += dz * World.AbsoluteCameraDirection.X;
World.AbsoluteCameraPosition.Y += dz * World.AbsoluteCameraDirection.Y;
World.AbsoluteCameraPosition.Z += dz * World.AbsoluteCameraDirection.Z;
ReducedMode = false;
}
}
}