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); }