Exemple #1
0
        public Matrix GetViewTransformationMatrix()
        {
            if (isViewTransformationDirty)
            {
                camTranslationVector.X = -position.X;
                camTranslationVector.Y = -position.Y;

                Matrix.CreateTranslation(ref camTranslationVector, out camTranslationMatrix);
                Matrix.CreateRotationZ(rotation, out camRotationMatrix);

                camScaleVector.X = zoom;
                camScaleVector.Y = zoom;
                camScaleVector.Z = 1;

                Matrix.CreateScale(ref camScaleVector, out camScaleMatrix);

                resTranslationVector.X = ResolutionIndependentRenderer.VirtualWidth * 0.5f;
                resTranslationVector.Y = ResolutionIndependentRenderer.VirtualHeight * 0.5f;
                resTranslationVector.Z = 0;

                Matrix.CreateTranslation(ref resTranslationVector, out resTranslationMatrix);

                transform = camRotationMatrix *
                            camTranslationMatrix *
                            camScaleMatrix *
                            resTranslationMatrix *
                            ResolutionIndependentRenderer.GetTransformationMatrix();

                isViewTransformationDirty = false;
            }

            return(transform);
        }
        public Matrix GetViewTransformationMatrix()
        {
            if (_isViewTransformationDirty)
            {
                _camTranslationVector.X = -_position.X;
                _camTranslationVector.Y = -_position.Y;

                Matrix.CreateTranslation(ref _camTranslationVector, out _camTranslationMatrix);
                Matrix.CreateRotationZ(_rotation, out _camRotationMatrix);

                _camScaleVector.X = _zoom;
                _camScaleVector.Y = _zoom;
                _camScaleVector.Z = 1;

                Matrix.CreateScale(ref _camScaleVector, out _camScaleMatrix);

                _resTranslationVector.X = ResolutionIndependentRenderer.VirtualWidth * 0.5f;
                _resTranslationVector.Y = ResolutionIndependentRenderer.VirtualHeight * 0.5f;
                _resTranslationVector.Z = 0;

                Matrix.CreateTranslation(ref _resTranslationVector, out _resTranslationMatrix);

                _transform = _camTranslationMatrix *
                             _camRotationMatrix *
                             _camScaleMatrix *
                             _resTranslationMatrix *
                             ResolutionIndependentRenderer.GetTransformationMatrix();

                _isViewTransformationDirty = false;
            }

            return(_transform);
        }