From 54409423f767d8b1cf30cb7d0efca6b4ca138823 Mon Sep 17 00:00:00 2001 From: Ethan Morgan Date: Sat, 14 Feb 2026 16:44:06 +0000 Subject: move to own git server --- apps/openmb/scene/Camera.hpp | 69 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 apps/openmb/scene/Camera.hpp (limited to 'apps/openmb/scene/Camera.hpp') diff --git a/apps/openmb/scene/Camera.hpp b/apps/openmb/scene/Camera.hpp new file mode 100644 index 0000000..7c5edc7 --- /dev/null +++ b/apps/openmb/scene/Camera.hpp @@ -0,0 +1,69 @@ +#pragma once + +#include +#include +#include + +namespace scene { +enum class Movement { + Forward, + Backward, + Left, + Right, + Up, + Down +}; + +class Camera { + public: + Camera(); + Camera( const glm::vec3& position, const glm::vec3& up, float yaw, float pitch ); + + glm::mat4 getViewMatrix() const; + glm::mat4 getProjectionMatrix( float aspect ) const; + + void processKeyboard( Movement dir, float deltaTime ); + void processMouseMovement( float xoffset, float yoffset, bool constrainPitch = true ); + void processMouseScroll( float yoffset ); + + void toggleFly(); + void setSpeedMultiplier( float m ); + void jump(); + + bool isFlying() const; + bool isGrounded() const; + float getSpeedMultiplier() const; + + void updatePhysics( float deltaTime, const std::vector>& worldAABBs, + float floorY = 0.0f ); + + glm::vec3 position () const { return mPosition; } + + float getPitch () const { return mPitch; } + + float getYaw () const { return mYaw; } + + private: + void updateCameraVectors(); + + private: + glm::vec3 mPosition; + glm::vec3 mFront; + glm::vec3 mUp; + glm::vec3 mRight; + glm::vec3 mWorldUp; + + float mYaw; + float mPitch; + + float mMovementSpeed; + float mMouseSensitivity; + float mFov; + + glm::vec3 mVelocity; + bool mFlying; + bool mGrounded; + float mSpeedMultiplier; +}; + +} // namespace scene -- cgit v1.2.3