Esempio n. 1
0
        private void MoveCamera()
        {
            var    angleRetrieved                 = false;
            float  horizontalCameraAngle          = 0;
            double horizontalCameraAngleUpDown    = 0;
            double horizontalCameraAngleLeftRight = 0;

            if (_isCameraMovingUp)
            {
                if (!_isCameraMovingBack)
                {
                    horizontalCameraAngle       = _gameValueService.GetHorizontalCameraAngle();
                    angleRetrieved              = true;
                    horizontalCameraAngleUpDown = horizontalCameraAngle + Math.PI;
                }
            }
            else if (_isCameraMovingBack)
            {
                horizontalCameraAngle       = _gameValueService.GetHorizontalCameraAngle();
                angleRetrieved              = true;
                horizontalCameraAngleUpDown = horizontalCameraAngle;
            }

            if (_isCameraMovingRight)
            {
                if (!_isCameraMovingLeft)
                {
                    if (!angleRetrieved)
                    {
                        horizontalCameraAngle = _gameValueService.GetHorizontalCameraAngle();
                    }

                    horizontalCameraAngleLeftRight = horizontalCameraAngle + 0.5 * Math.PI;
                }
            }
            else if (_isCameraMovingLeft)
            {
                if (!angleRetrieved)
                {
                    horizontalCameraAngle = _gameValueService.GetHorizontalCameraAngle();
                }

                horizontalCameraAngleLeftRight = horizontalCameraAngle + 1.5 * Math.PI;
            }

            float xOffset = 0, yOffset = 0;

            if (horizontalCameraAngleUpDown != 0)
            {
                xOffset += (float)Math.Cos(horizontalCameraAngleUpDown);
                yOffset += (float)Math.Sin(horizontalCameraAngleUpDown);
            }

            if (horizontalCameraAngleLeftRight != 0)
            {
                xOffset += (float)Math.Cos(horizontalCameraAngleLeftRight);
                yOffset += (float)Math.Sin(horizontalCameraAngleLeftRight);
            }

            ChangeCameraPosition(xOffset * CameraMovementOffset, yOffset * CameraMovementOffset);
        }