Files
MonoGame.Extended/Source/MonoGame.Extended/ViewportAdapters/ViewportAdapter.cs
T

46 lines
1.3 KiB
C#

using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace MonoGame.Extended.ViewportAdapters
{
public abstract class ViewportAdapter : IDisposable
{
protected ViewportAdapter(GraphicsDevice graphicsDevice)
{
GraphicsDevice = graphicsDevice;
}
public virtual void Dispose()
{
}
public GraphicsDevice GraphicsDevice { get; }
public Viewport Viewport => GraphicsDevice.Viewport;
public abstract int VirtualWidth { get; }
public abstract int VirtualHeight { get; }
public abstract int ViewportWidth { get; }
public abstract int ViewportHeight { get; }
public Rectangle BoundingRectangle => new Rectangle(0, 0, VirtualWidth, VirtualHeight);
public Point Center => BoundingRectangle.Center;
public abstract Matrix GetScaleMatrix();
public Point PointToScreen(Point point)
{
return PointToScreen(point.X, point.Y);
}
public virtual Point PointToScreen(int x, int y)
{
var scaleMatrix = GetScaleMatrix();
var invertedMatrix = Matrix.Invert(scaleMatrix);
return Vector2.Transform(new Vector2(x, y), invertedMatrix).ToPoint();
}
public virtual void Reset()
{
}
}
}