using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace FSO.Common.Rendering.Framework.Camera { /// /// Orthographic camera for the game. Used for rendering lots. /// public class OrthographicCamera : BasicCamera { public OrthographicCamera(GraphicsDevice device, Vector3 Position, Vector3 Target, Vector3 Up) : base(device, Position, Target, Up) { } protected override void CalculateProjection() { var device = m_Device; var aspect = device.Viewport.AspectRatio * AspectRatioMultiplier; var ratioX = m_ProjectionOrigin.X / device.Viewport.Width; var ratioY = m_ProjectionOrigin.Y / device.Viewport.Height; var projectionX = 0.0f - (1.0f * ratioX); var projectionY = (1.0f * ratioY); m_Projection = Matrix.CreateOrthographicOffCenter( projectionX, projectionX + 1.0f, ((projectionY - 1.0f) / aspect), (projectionY) / aspect, NearPlane, FarPlane ); var zoom = 1 / m_Zoom; m_Projection = m_Projection * Matrix.CreateScale(zoom); } } }