summaryrefslogtreecommitdiff
path: root/src/camera.hpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-11-15 13:03:48 -0500
committerJonathan Bradley <jcb@pikum.xyz>2023-11-15 13:03:48 -0500
commit1513216876a0409f45d88cbad14ae8b48fca37e2 (patch)
tree32b48d966faf36138dd985e4df739a83cddc5f48 /src/camera.hpp
parent6a30d21c5175c27aeccc8a6ae956c274f3ef9621 (diff)
major input refactor and add debug camera
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;
+
+