public Matrix GetScaleMatrix()
{
if (scaleMatrix.HasValue == false)
{
var screenSize = Client.ScreenManager.CurrentScreen.GetLayoutSize();
var gameWorldSize = new Vector2(screenSize.Width, screenSize.Height);
var vp = graphicsDevice.Viewport;
var scaleX = vp.Width / gameWorldSize.X;
var scaleY = vp.Height / gameWorldSize.Y;
scaleY = scaleX;
var translateX = (vp.Width - (gameWorldSize.X * scaleX)) / 2f;
var translateY = (vp.Height - (gameWorldSize.Y * scaleY)) / 2f;
var camera = Matrix.CreateScale(scaleX, scaleY, 1)
* Matrix.CreateTranslation(translateX, translateY, 0);
scaleMatrix = camera;
}
return(scaleMatrix.Value);
}