Exemplo n.º 1
0
        public override void Update()
        {
            base.Update();

            sun.orbitCenter += new Vector2(1, 0);

            float scaleChange = 0.01f *
                                ((Input.Keyboard.IsDown(Keys.A) ? 1.0f : 0.0f) + (Input.Keyboard.IsDown(Keys.S) ? -1.0f : 0.0f));

            float rotationChange = 0.01f *
                                   ((Input.Keyboard.IsDown(Keys.Q) ? 1.0f : 0.0f) + (Input.Keyboard.IsDown(Keys.W) ? -1.0f : 0.0f));

            Vector2 changePosition = Vector2.Zero;

            changePosition.X += Input.Keyboard.IsDown(Keys.Right) ? 1 : 0;
            changePosition.X += Input.Keyboard.IsDown(Keys.Left) ? -1 : 0;
            changePosition.Y += Input.Keyboard.IsDown(Keys.Up) ? -1 : 0;
            changePosition.Y += Input.Keyboard.IsDown(Keys.Down) ? 1 : 0;

            changePosition *= 5;

            if (scaleChange != 0 || rotationChange != 0 || changePosition != Vector2.Zero)
            {
                scale      += scaleChange;
                rotation   += rotationChange;
                translate  += changePosition;
                Core.Camera = Matrix.Identity
                              * MatrixTransforms.TransformMatrix(-sun.GlobalPosition.X, -sun.GlobalPosition.Y)
                              * MatrixTransforms.ScaleMatrix(scale)
                              * MatrixTransforms.RotationMatrix(rotation)
                              * MatrixTransforms.TransformMatrix(sun.GlobalPosition.X, sun.GlobalPosition.Y)
                              //* MatrixTransforms.TransformMatrix(-Core.Width / 2, -Core.Height / 2)
                              //* MatrixTransforms.RotationMatrix(rotation)
                              //* MatrixTransforms.TransformMatrix(Core.Width / 2, Core.Height / 2)
                              * MatrixTransforms.TransformMatrix(-translate.X, -translate.Y)
                ;
            }
        }