using Microsoft.Xna.Framework;

namespace Kav
{
    public struct PerspectiveCamera
    {
        public Matrix View { get; }
        public Matrix Projection { get; }

        public Vector3 Position { get; }
        public Vector3 Forward { get; }
        public Vector3 Up { get; }

        public float FieldOfView { get; }
        public float AspectRatio { get; }
        public float NearPlane { get; }
        public float FarPlane { get; }

        public PerspectiveCamera(Vector3 position, Vector3 forward, Vector3 up, float fieldOfView, float aspectRatio, float nearPlane, float farPlane)
        {
            Position = position;
            Forward = forward;
            Up = up;
            View = Matrix.CreateLookAt(Position, Position + Forward, Up);

            FieldOfView = fieldOfView;
            AspectRatio = aspectRatio;
            NearPlane = nearPlane;
            FarPlane = farPlane;    
            Projection = Matrix.CreatePerspectiveFieldOfView(FieldOfView, AspectRatio, NearPlane, FarPlane);
        }
    }
}