18     Camera(
const glm::vec3& position, 
const glm::vec3& target, 
const glm::vec3& up, 
int width, 
int height, 
float nearPlane, 
float farPlane, 
float fov);
 
   24     void setPerspective(
int width, 
int height, 
float nearPlane, 
float farPlane, 
float fov);
 
   29     void setWindowSize(
int width, 
int height);
 
   30     void setPosition(
const glm::vec3& position);
 
   31     void setTarget(
const glm::vec3& target);
 
   32     void setUp(
const glm::vec3& up);
 
   33     void setView(
const glm::vec3& position, 
const glm::vec3& target, 
const glm::vec3& up);
 
   36     const glm::vec3& getPosition() 
const;
 
   37     const glm::vec3& getTarget() 
const;
 
   38     const glm::vec3& getUp() 
const;
 
   40     const glm::mat4& getView() 
const;
 
   41     const glm::mat4& getInverseView() 
const;
 
   42     const glm::mat4& getPerspective() 
const;
 
   47     const glm::mat4& 
getVP() 
const;
 
   54     float getNearPlane() 
const;
 
   55     float getFarPlane() 
const;
 
   62     int getHeight() 
const;
 
   73     void getMouseRay(
float mouseX, 
float mouseY, glm::vec3& rayOrigin, glm::vec3& rayDirection);
 
   82     float _nearPlane, _farPlane;
 
   91     glm::mat4 _perspective;
 
   94     bool _changedView, _changedPerspective;