summaryrefslogtreecommitdiff
path: root/src/camera.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/camera.hpp')
-rw-r--r--src/camera.hpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/camera.hpp b/src/camera.hpp
new file mode 100644
index 0000000..c699767
--- /dev/null
+++ b/src/camera.hpp
@@ -0,0 +1,33 @@
+
+#include "macros.hpp"
+#include "vendor/glm_include.hpp"
+
+#include <cstdint>
+
+TypeSafeInt_Const_Expr(PkeCameraType, uint8_t, 0xFF);
+TypeSafeInt_Const_Expr(PkeCameraOrientation, uint8_t, 0xFF);
+TypeSafeInt_Const_Expr(PkeCameraStaleFlags, uint8_t, 0xFF);
+
+const PkeCameraType PKE_CAMERA_TYPE_PERSPECTIVE = PkeCameraType{1 << 0};
+const PkeCameraType PKE_CAMERA_TYPE_ORTHOGONAL = PkeCameraType{1 << 1};
+
+const PkeCameraOrientation PKE_CAMERA_ORIENTATION_TARGET = PkeCameraOrientation{1 << 0};
+const PkeCameraOrientation PKE_CAMERA_ORIENTATION_FREE = PkeCameraOrientation{1 << 1};
+
+const PkeCameraStaleFlags PKE_CAMERA_STALE_POS = PkeCameraStaleFlags{1 << 0};
+const PkeCameraStaleFlags PKE_CAMERA_STALE_ROT = PkeCameraStaleFlags{1 << 1};
+const PkeCameraStaleFlags PKE_CAMERA_STALE_ORIENTATION = PkeCameraStaleFlags{1 << 2};
+const PkeCameraStaleFlags PKE_CAMERA_STALE_ALL = PkeCameraStaleFlags{0xFF};
+
+struct PkeCamera {
+ glm::vec3 pos;
+ glm::quat rot;
+ glm::vec3 target;
+ PkeCameraType type;
+ PkeCameraOrientation orientation;
+ PkeCameraStaleFlags stale;
+};
+extern PkeCamera NullCamera;
+extern PkeCamera *ActiveCamera;
+
+