public void InputDeviceOnMouseMove(object sender, Frame.MouseEventArgs args) { if (Game.InputDevice.IsKeyDown(Keys.LeftButton)) { DVector2 before, after; var beforeHit = ScreenToSpherical(previousMousePosition.X, previousMousePosition.Y, out before); var afterHit = ScreenToSpherical(args.X, args.Y, out after); if (beforeHit && afterHit) { Yaw -= after.X - before.X; Pitch += after.Y - before.Y; } } if (Game.InputDevice.IsKeyDown(Keys.RightButton)) { var dif = new Vector2(args.X, args.Y) - previousMousePosition; if (dif.Y > 0) { Config.CameraDistance -= (Config.CameraDistance - Config.earthRadius) * 0.04; } else if (dif.Y < 0) { Config.CameraDistance += (Config.CameraDistance - Config.earthRadius) * 0.04; } } if (Game.InputDevice.IsKeyDown(Keys.Up)) { Config.CameraDistance -= 0.01; } previousMousePosition = new Vector2(args.X, args.Y); }
private void RootFrame_MouseDown(object sender, Frame.MouseEventArgs e) { if (Game.Keyboard.IsKeyDown(Keys.LeftAlt)) { if (e.Key == Keys.LeftButton) { camera.StartManipulation(e.X, e.Y, Manipulation.Rotating); } else if (e.Key == Keys.RightButton) { camera.StartManipulation(e.X, e.Y, Manipulation.Zooming); } else if (e.Key == Keys.MiddleButton) { camera.StartManipulation(e.X, e.Y, Manipulation.Translating); } else { camera.StartManipulation(e.X, e.Y, Manipulation.None); } } else { if (!manipulator.StartManipulation(e.X, e.Y)) { StartMarqueeSelection(e.X, e.Y, Game.Keyboard.IsKeyDown(Keys.LeftShift)); } } }
private void RootFrame_Click(object sender, Frame.MouseEventArgs e) { if (camera.Manipulation == Manipulation.None && !manipulator.IsManipulating) { var shift = Game.Keyboard.IsKeyDown(Keys.LeftShift) || Game.Keyboard.IsKeyDown(Keys.RightShift); Select(e.X, e.Y, shift); } }
void minus_Click(object sender, Frame.MouseEventArgs e) { distance -= 0.1f; if (distance < 0.1f) { distance = 0.1f; } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void InputDeviceOnMouseDown(object sender, Frame.MouseEventArgs args) { if (args.Key != Keys.LeftButton) { return; } var w = viewportWidth; var h = viewportHeight; var pos = new Vector2(args.X, args.Y); var nearPoint = new DVector3(pos.X, pos.Y, frustumZNear); var farPoint = new DVector3(pos.X, pos.Y, frustumZFar); var vm = DMatrix.LookAtRH(cameraPosition, DVector3.Zero, DVector3.UnitY); var mVP = vm * projMatrix; var near = DVector3.Unproject(nearPoint, 0, 0, w, h, frustumZNear, frustumZFar, mVP); var far = DVector3.Unproject(farPoint, 0, 0, w, h, frustumZNear, frustumZFar, mVP); DVector3[] res; if (LineIntersection(near, far, Config.earthRadius, out res)) { if (res.Length > 0) { double lon, lat; CartesianToSpherical(res[0], out lon, out lat); var lonLat = new DVector2(DMathUtil.RadiansToDegrees(lon), DMathUtil.RadiansToDegrees(lat)); Console.WriteLine(lonLat); } } }
private void RootFrame_MouseUp(object sender, Frame.MouseEventArgs e) { camera.StopManipulation(e.X, e.Y); manipulator.StopManipulation(e.X, e.Y); StopMarqueeSelection(e.X, e.Y); }
private void RootFrame_MouseMove(object sender, Frame.MouseEventArgs e) { camera.UpdateManipulation(e.X, e.Y); manipulator.UpdateManipulation(e.X, e.Y); UpdateMarqueeSelection(e.X, e.Y); }
void plus_Click(object sender, Frame.MouseEventArgs e) { distance += 0.1f; }
void return_Click(object sender, Frame.MouseEventArgs e) { AddMaxParticles(); }