#pragma once #include "scene/camera.hpp" class flying_camera : public camera { public: explicit flying_camera(float yaw, float pitch, float roll); void update( float time_delta, glm::vec2 mouse_pos_delta, float mouse_wheel_delta, camera_view& view ) override; void look_at( const glm::vec3& origin, const glm::vec3& target, camera_view& view ) override; private: glm::vec3 m_velocity{ 0.0f, 0.0f, 0.0f }; glm::mat3 m_world_rotation; glm::vec3 m_world_up; float m_pitch, m_yaw, m_roll; };