aboutsummaryrefslogtreecommitdiff
path: root/src/client/render/camera.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/render/camera.hh')
-rw-r--r--src/client/render/camera.hh38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/client/render/camera.hh b/src/client/render/camera.hh
new file mode 100644
index 0000000..018f54f
--- /dev/null
+++ b/src/client/render/camera.hh
@@ -0,0 +1,38 @@
+#ifndef CLIENT_RENDER_CAMERA_HH_
+#define CLIENT_RENDER_CAMERA_HH_
+
+#include <array>
+
+#include <glm/glm.hpp>
+#include <glm/gtc/matrix_access.hpp>
+#include <glm/gtc/matrix_transform.hpp>
+
+#include "client/render/render.hh"
+
+namespace client {
+namespace render {
+namespace camera {
+
+// Call update after modifying references to camera objects.
+void update() noexcept;
+
+// modifying
+float& get_xfov() noexcept;
+glm::vec3& get_pos() noexcept;
+glm::vec3& get_front() noexcept;
+glm::vec3& get_up() noexcept;
+glm::mat4& get_view() noexcept;
+glm::mat4& get_proj() noexcept;
+using frustum = std::array<glm::vec4, 6>;
+frustum& get_frustum() noexcept;
+float& get_znear() noexcept;
+float& get_zfar() noexcept;
+
+// non-modifying
+float get_yfov() noexcept;
+
+} // namespace camera
+} // namespace render
+} // namespace client
+
+#endif