//  BlockyFroggy
//  Copyright © 2017 John Ryland.
//  All rights reserved.
#pragma once
#ifndef CAMERA_H
#define CAMERA_H


class Camera
{
public:
  Camera()  {}
  ~Camera() {}

  void build(float fov, float aspect, float rotate[3], float scale, float translateX, float translateY, float translateZ, bool ortho = false);
  bool isClipped(float x, float y, float z, float w, float h, float d);

  // For debugging, kind of expensive
  void calcFrustum(float a_frustumPts[8][4]);

  float m_projectionMatrix[16];
  float m_cameraMatrix[16];
  float m_modelViewProjectionMatrix[16];
  float m_clipPlanes[6][4];
};


#endif // CAMERA_H

