module; #include <stdafx.h> export module Camera; namespace fpr { export class Camera { glm::vec3 m_position; glm::quat m_rotation; glm::mat4 m_view_matrix; glm::mat4 m_projection_matrix; float m_FOV; float m_near; float m_far; float m_movement_speed = 300.0f; float m_rotation_speed = 2.0f; public: Camera( glm::vec3 position = { 0.0f, 0, 0.0f }, glm::quat rotation = { 1.0f, 0.0f, 0.0f, 0.0f }, float FOV = 60.0f, float near = 1.0f, float far = 10000); void Update(); void SetPosition(glm::vec3 new_pos); void SetRotation(float amount, glm::vec3 axis_rot); void MoveX(float value); void MoveY(float value); void MoveZ(float value); void RotateX(float value); void RotateY(float value); void RotateZ(float value); [[nodiscard]] const glm::mat4 GetViewMatrix() const FPR_NOEXCEPT; [[nodiscard]] const glm::mat4 GetProjectionMatrix() const FPR_NOEXCEPT; [[nodiscard]] const glm::vec3 GetPosition() const FPR_NOEXCEPT; }; } // namespace fpr