X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcamera.hpp;h=717da243eefe26b060da588bb72c2fa0fd5497c6;hb=e53a0e2e711a7d8bd9b0ddacd1360aa14370643f;hp=3adb800ce344b03da6a2261d5486c2ef4fd58365;hpb=6af76d9e1a6499ebdab405c1d679d24b9e19fded;p=blank.git diff --git a/src/camera.hpp b/src/camera.hpp index 3adb800..717da24 100644 --- a/src/camera.hpp +++ b/src/camera.hpp @@ -3,40 +3,27 @@ #include -#include "controller.hpp" -#include "geometry.hpp" - namespace blank { -class Camera -: public FPSController { +class Camera { public: - Camera(); - - Camera(const Camera &) = delete; - Camera &operator =(const Camera &) = delete; - - glm::mat4 MakeMVP(const glm::mat4 &m) const { return vp * m; } - - void Viewport(int width, int height); - void Viewport(int x, int y, int width, int height); - - void FOV(float f); - void Aspect(float r); - void Aspect(float w, float h); - void Clip(float near, float far); + Camera() noexcept; - Ray Aim() const; + void Viewport(int width, int height) noexcept; + void Viewport(int x, int y, int width, int height) noexcept; - const glm::mat4 &Projection() { return projection; } - const glm::mat4 &View() { return view; } + /// FOV in radians + void FOV(float f) noexcept; + void Aspect(float r) noexcept; + void Aspect(float w, float h) noexcept; + void Clip(float near, float far) noexcept; - void Update(int dt); + const glm::mat4 &Projection() noexcept { return projection; } private: - void UpdateProjection(); + void UpdateProjection() noexcept; private: float fov; @@ -45,8 +32,6 @@ private: float far_clip; glm::mat4 projection; - glm::mat4 view; - glm::mat4 vp; };