Пример #1
0
        public void ProcessMouse(Xwing Xwing)
        {
            var mouseState = Mouse.GetState();
            //var mousePosition = mouseState.Position.ToVector2();
            //var mouseDelta = mousePosition - pastMousePosition;
            var mouseDelta = (mouseState.Position - screenCenter).ToVector2();

            Mouse.SetPosition(screenCenter.X, screenCenter.Y);
            //System.Diagnostics.Debug.WriteLine(mouseState.ScrollWheelValue);
            mouseDelta *= MouseSensitivity * 0.010f;

            //System.Diagnostics.Debug.WriteLine(time);
            //Evito movimientos muy rapidos con mouse
            //System.Diagnostics.Debug.WriteLine(mouseDelta.X + " " + mouseDelta.Y);
            mouseDelta.X = MathHelper.Clamp(mouseDelta.X, -maxMouseDelta, maxMouseDelta);
            mouseDelta.Y = MathHelper.Clamp(mouseDelta.Y, -maxMouseDelta, maxMouseDelta);

            //if (mouseDelta == Vector2.Zero)
            //    return;
            TGCGame.MutexDeltas.WaitOne();
            delta = mouseDelta;
            TGCGame.MutexDeltas.ReleaseMutex();
            //System.Diagnostics.Debug.WriteLine("delta " + Math.Round(mouseDelta.X, 2) +"|" + Math.Round(mouseDelta.Y, 2));

            Xwing.updateRoll(delta);

            Yaw += mouseDelta.X;
            if (Yaw < 0)
            {
                Yaw += 360;
            }
            Yaw %= 360;

            Pitch -= mouseDelta.Y;

            if (Pitch > 89.0f)
            {
                Pitch = 89.0f;
            }
            if (Pitch < -89.0f)
            {
                Pitch = -89.0f;
            }

            //changed = true;
            UpdateCameraVectors();

            //pastMousePosition = Mouse.GetState().Position.ToVector2();
        }
Пример #2
0
        public void ProcessKeyboard(Xwing xwing)
        {
            var keyboardState = Keyboard.GetState();

            SpeedMultiplier = 1f;
            if (!debugging)
            {
                if (keyboardState.IsKeyDown(Keys.W))
                {
                    if (xwing.Energy > 0 && !xwing.BoostLock)
                    {
                        xwing.Boosting  = true;
                        SpeedMultiplier = 1f + 6f * xwing.boostTime;
                        //Debug.WriteLine(SpeedMultiplier);
                    }
                    else if (xwing.Energy == 0 && xwing.Boosting)
                    {
                        xwing.BoostLock = true;
                        xwing.Boosting  = false;
                    }
                    else if (xwing.Energy >= 3 && xwing.BoostLock)
                    {
                        xwing.BoostLock = false;
                    }
                }
                else if (keyboardState.IsKeyDown(Keys.S))
                {
                    xwing.Boosting  = false;
                    SpeedMultiplier = 0.5f;
                }
                else
                {
                    xwing.Boosting = false;
                }
            }
            else
            {
                //Free cam for debug
                if (keyboardState.IsKeyDown(Keys.LeftShift))
                {
                    CurrentMovementSpeed *= 10f;
                }

                if (keyboardState.IsKeyDown(Keys.A))
                {
                    Position += -RightDirection * CurrentMovementSpeed;
                }
                if (keyboardState.IsKeyDown(Keys.D))
                {
                    Position += RightDirection * CurrentMovementSpeed;
                }
                if (keyboardState.IsKeyDown(Keys.W))
                {
                    Position += FrontDirection * CurrentMovementSpeed;
                }
                if (keyboardState.IsKeyDown(Keys.S))
                {
                    Position += -FrontDirection * CurrentMovementSpeed;
                }

                if (ArrowsLookEnabled)
                {
                    if (keyboardState.IsKeyDown(Keys.Up))
                    {
                        Pitch  += CurrentTurnSpeed;
                        delta.Y = CurrentTurnSpeed;
                        if (Pitch > 89.0f)
                        {
                            Pitch = 89.0f;
                        }
                    }
                    if (keyboardState.IsKeyDown(Keys.Down))
                    {
                        Pitch  -= CurrentTurnSpeed;
                        delta.Y = -CurrentTurnSpeed;
                        if (Pitch < -89.0f)
                        {
                            Pitch = -89.0f;
                        }
                    }
                    if (keyboardState.IsKeyDown(Keys.Left))
                    {
                        Yaw    -= CurrentTurnSpeed;
                        delta.X = -CurrentTurnSpeed;
                        if (Yaw < 0)
                        {
                            Yaw += 360;
                        }
                        Yaw %= 360;
                    }
                    if (keyboardState.IsKeyDown(Keys.Right))
                    {
                        Yaw    += CurrentTurnSpeed;
                        delta.X = CurrentTurnSpeed;
                        Yaw    %= 360;
                    }
                    xwing.updateRoll(delta);
                }
            }
        }