summaryrefslogtreecommitdiff
path: root/gfx/camera.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2025-03-05 23:52:18 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2025-03-05 23:52:18 +0000
commit4e10d57f83f719e02005fe41e70fe1a4721a9439 (patch)
tree44a7300f97e1a7c09ad560f2176e1c089da6fe20 /gfx/camera.h
parentMove camera out of gl folder, it's not OpenGL specific (diff)
downloadilt-4e10d57f83f719e02005fe41e70fe1a4721a9439.tar.bz2
ilt-4e10d57f83f719e02005fe41e70fe1a4721a9439.tar.xz
ilt-4e10d57f83f719e02005fe41e70fe1a4721a9439.zip
Split core view definition out of Camera into Frustum
Diffstat (limited to 'gfx/camera.h')
-rw-r--r--gfx/camera.h23
1 files changed, 5 insertions, 18 deletions
diff --git a/gfx/camera.h b/gfx/camera.h
index d4fe6de..a52ec8b 100644
--- a/gfx/camera.h
+++ b/gfx/camera.h
@@ -1,19 +1,14 @@
#pragma once
#include "config/types.h"
+#include "frustum.h"
#include <glm/glm.hpp>
#include <maths.h>
#include <ray.h>
-class Camera {
+class Camera : public Frustum {
public:
- Camera(GlobalPosition3D, Angle fov, Angle aspect, GlobalDistance zNear, GlobalDistance zFar);
-
- [[nodiscard]] glm::mat4
- getViewProjection() const
- {
- return viewProjection;
- }
+ Camera(GlobalPosition3D position, Angle fov, Angle aspect, GlobalDistance near, GlobalDistance far);
[[nodiscard]] Ray<GlobalPosition3D> unProject(const ScreenRelCoord &) const;
@@ -70,25 +65,17 @@ public:
return position;
}
- [[nodiscard]] auto &
- getFrustumPlanes() const
- {
- return frustumPlanes;
- }
-
[[nodiscard]] std::array<GlobalPosition4D, 4> extentsAtDist(GlobalDistance) const;
[[nodiscard]] static Direction3D upFromForward(const Direction3D & forward);
private:
+ Camera(GlobalPosition3D position, GlobalDistance near, GlobalDistance far, const glm::mat4 & view,
+ const glm::mat4 & projection);
void updateView();
GlobalPosition3D position;
Direction3D forward;
Direction3D up;
-
GlobalDistance near, far;
- glm::mat4 view, projection;
- glm::mat4 viewProjection, inverseViewProjection;
- std::array<glm::vec4, 6> frustumPlanes;
};