From 04c97b83505e685d590c28c7605128716f3333ff Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Wed, 6 Dec 2023 15:31:08 -0500 Subject: cameras can be rigstered --- src/camera.hpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'src/camera.hpp') diff --git a/src/camera.hpp b/src/camera.hpp index c699767..94923b7 100644 --- a/src/camera.hpp +++ b/src/camera.hpp @@ -1,3 +1,5 @@ +#ifndef PKE_CAMERA_HPP +#define PKE_CAMERA_HPP #include "macros.hpp" #include "vendor/glm_include.hpp" @@ -8,6 +10,8 @@ TypeSafeInt_Const_Expr(PkeCameraType, uint8_t, 0xFF); TypeSafeInt_Const_Expr(PkeCameraOrientation, uint8_t, 0xFF); TypeSafeInt_Const_Expr(PkeCameraStaleFlags, uint8_t, 0xFF); +TypeSafeInt_H(CameraHandle, uint64_t, UINT64_MAX); + const PkeCameraType PKE_CAMERA_TYPE_PERSPECTIVE = PkeCameraType{1 << 0}; const PkeCameraType PKE_CAMERA_TYPE_ORTHOGONAL = PkeCameraType{1 << 1}; @@ -20,14 +24,25 @@ const PkeCameraStaleFlags PKE_CAMERA_STALE_ORIENTATION = PkeCameraStaleFlags{1 < 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; + CameraHandle handle = CameraHandle{0}; + glm::vec3 pos = glm::vec3(0); + glm::quat rot = glm::quat{}; + glm::vec3 target = glm::vec3(0); + PkeCameraType type = PkeCameraType_MAX; + PkeCameraOrientation orientation = PkeCameraOrientation_MAX; + PkeCameraStaleFlags stale = PkeCameraStaleFlags_MAX; }; extern PkeCamera NullCamera; extern PkeCamera *ActiveCamera; +void PkeCamera_Init(); +PkeCamera &PkeCamera_Register(); +PkeCamera *PkeCamera_Get(CameraHandle handle); +int64_t PkeCamera_GetBucketCount(); +PkeCamera *PkeCamera_GetCameras(int64_t bucketIndex, int64_t &count); +void PkeCamera_Destroy(CameraHandle handle); +void PkeCamera_Teardown(); + +void PkeCamera_Unregister(uint64_t id); +#endif /* PKE_CAMERA_HPP */ -- cgit v1.2.3