コード例 #1
0
        /// <summary>
        /// Update camera for mouse input.
        /// </summary>
        private static void UpdateForMouse(Camera3DBase actCamera, bool isControlKeyDown, MouseOrPointerState mouseState)
        {
            // Handle mouse move
            if (mouseState.MoveDistanceDip != Vector2.Zero)
            {
                var moving = mouseState.MoveDistanceDip;

                if (mouseState.IsButtonDown(MouseButton.Left) &&
                    mouseState.IsButtonDown(MouseButton.Right))
                {
                    actCamera.Zoom(moving.Y / -50f);
                }
                else if (mouseState.IsButtonDown(MouseButton.Left))
                {
                    actCamera.Strave(moving.X / 50f);
                    actCamera.UpDown(-moving.Y / 50f);
                }
                else if (mouseState.IsButtonDown(MouseButton.Right))
                {
                    actCamera.Rotate(-moving.X / 200f, -moving.Y / 200f);
                }
            }

            // Handle mouse wheel
            if (mouseState.WheelDelta != 0)
            {
                var multiplier = 1f;
                if (isControlKeyDown)
                {
                    multiplier = 2f;
                }
                actCamera.Zoom(mouseState.WheelDelta / 100f * multiplier);
            }
        }
コード例 #2
0
        /// <summary>
        /// Update camera for keyboard input.
        /// </summary>
        private static void UpdateForKeyboard(
            Camera3DBase actCamera, KeyboardState actKeyboardState,
            out bool isControlKeyDown)
        {
            // Define multiplier
            var multiplier = 1f;

            isControlKeyDown = false;

            if (actKeyboardState.IsKeyDown(WinVirtualKey.ControlKey) ||
                actKeyboardState.IsKeyDown(WinVirtualKey.LControlKey) ||
                actKeyboardState.IsKeyDown(WinVirtualKey.RControlKey))
            {
                multiplier       = 2f;
                isControlKeyDown = true;
            }

            foreach (var actKey in actKeyboardState.KeysDown)
            {
                switch (actKey)
                {
                case WinVirtualKey.Up:
                case WinVirtualKey.W:
                    actCamera.Zoom(MOVEMENT * multiplier);
                    break;

                case WinVirtualKey.Down:
                case WinVirtualKey.S:
                    actCamera.Zoom(-MOVEMENT * multiplier);
                    break;

                case WinVirtualKey.Left:
                case WinVirtualKey.A:
                    actCamera.Strave(-MOVEMENT * multiplier);
                    break;

                case WinVirtualKey.Right:
                case WinVirtualKey.D:
                    actCamera.Strave(MOVEMENT * multiplier);
                    break;

                case WinVirtualKey.Q:
                case WinVirtualKey.NumPad3:
                    actCamera.Move(new Vector3(0f, -MOVEMENT * multiplier, 0f));
                    break;

                case WinVirtualKey.E:
                case WinVirtualKey.NumPad9:
                    actCamera.Move(new Vector3(0f, MOVEMENT * multiplier, 0f));
                    break;

                case WinVirtualKey.NumPad4:
                    actCamera.Rotate(ROTATION, 0f);
                    break;

                case WinVirtualKey.NumPad2:
                    actCamera.Rotate(0f, -ROTATION);
                    break;

                case WinVirtualKey.NumPad6:
                    actCamera.Rotate(-ROTATION, 0f);
                    break;

                case WinVirtualKey.NumPad8:
                    actCamera.Rotate(0f, ROTATION);
                    break;
                }
            }
        }