diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-15 18:20:58 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-15 18:20:58 -0500 |
| commit | c30b1f9b2f5d231e98194db526560eb4e010edff (patch) | |
| tree | 328825d5187f5f0b3ffd6754f8795f6a5947b8f7 /src/camera.hpp | |
| parent | 05a6ca44e40da855a1ddc32cfe799edef74f7bdf (diff) | |
major refactor so cameras are entities and have a rigid body instance
Diffstat (limited to 'src/camera.hpp')
| -rw-r--r-- | src/camera.hpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/camera.hpp b/src/camera.hpp index ab10a5a..1adfbc7 100644 --- a/src/camera.hpp +++ b/src/camera.hpp @@ -1,6 +1,7 @@ #ifndef PKE_CAMERA_HPP #define PKE_CAMERA_HPP +#include "components.hpp" #include "macros.hpp" #include "vendor/glm_include.hpp" #include "memory-type-defs.hpp" @@ -15,37 +16,43 @@ struct CameraHandle : public PkeHandle {}; constexpr CameraHandle CameraHandle_MAX = CameraHandle{}; -const PkeCameraType PKE_CAMERA_TYPE_PERSPECTIVE = PkeCameraType{1 << 0}; -const PkeCameraType PKE_CAMERA_TYPE_ORTHOGONAL = PkeCameraType{1 << 1}; +constexpr PkeCameraType PKE_CAMERA_TYPE_PERSPECTIVE = PkeCameraType{1 << 0}; +constexpr 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}; +constexpr PkeCameraOrientation PKE_CAMERA_ORIENTATION_TARGET = PkeCameraOrientation{1 << 0}; +constexpr 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}; +constexpr PkeCameraStaleFlags PKE_CAMERA_STALE_POS = PkeCameraStaleFlags{1 << 0}; +constexpr PkeCameraStaleFlags PKE_CAMERA_STALE_ROT = PkeCameraStaleFlags{1 << 1}; +constexpr PkeCameraStaleFlags PKE_CAMERA_STALE_POSROT = PkeCameraStaleFlags{1 << 0 | 1 << 1}; +constexpr PkeCameraStaleFlags PKE_CAMERA_STALE_PERSPECTIVE = PkeCameraStaleFlags{1 << 2}; +constexpr PkeCameraStaleFlags PKE_CAMERA_STALE_ALL = PkeCameraStaleFlags{0xFF}; -struct PkeCamera { - CameraHandle handle = CameraHandle_MAX; +struct PkeCamera : public Entity_Base { + CameraHandle camHandle = CameraHandle_MAX; 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; + struct Phys { + CompInstance *inst = nullptr; + btTypedConstraint *constraint = nullptr; + } phys; bool isPrimary = false; }; extern PkeCamera NullCamera; extern PkeCamera *ActiveCamera; void PkeCamera_Init(); -PkeCamera &PkeCamera_Register(); +PkeCamera &PkeCamera_Register(const InstPos &instPos); 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_Tick(double delta); void PkeCamera_Unregister(uint64_t id); |
