Пример #1
0
        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);
        }
Пример #2
0
 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));
         }
     }
 }
Пример #3
0
 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);
     }
 }
Пример #4
0
        void minus_Click(object sender, Frame.MouseEventArgs e)
        {
            distance -= 0.1f;

            if (distance < 0.1f)
            {
                distance = 0.1f;
            }
        }
Пример #5
0
        /// <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);
                }
            }
        }
Пример #6
0
 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);
 }
Пример #7
0
 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);
 }
Пример #8
0
 void plus_Click(object sender, Frame.MouseEventArgs e)
 {
     distance += 0.1f;
 }
Пример #9
0
 void return_Click(object sender, Frame.MouseEventArgs e)
 {
     AddMaxParticles();
 }