diff --git a/modules/camera/include/vkcv/camera/CameraManager.hpp b/modules/camera/include/vkcv/camera/CameraManager.hpp index 43abd1fadccd8c6c704be6e3afbf16ca1bb21367..bd0d5d11f10159b55c742f03a60bae75f69b99a3 100644 --- a/modules/camera/include/vkcv/camera/CameraManager.hpp +++ b/modules/camera/include/vkcv/camera/CameraManager.hpp @@ -110,6 +110,15 @@ namespace vkcv::camera { */ CameraController& getActiveController(); + /** + * @brief Returns 'true' if the camera has a controller. + * + * @param cameraIndex + * @return true + * @return false + */ + bool CameraManager::cameraHasController(uint32_t cameraIndex); + public: /** @@ -184,7 +193,7 @@ namespace vkcv::camera { * @throws std::runtime_error If @p cameraIndex is not a valid camera index. */ ControllerType getControllerType(uint32_t cameraIndex); - + /** * @brief Updates all stored camera controllers in respect to @p deltaTime. * @param[in] deltaTime The time that has passed since last update. diff --git a/modules/camera/src/vkcv/camera/CameraManager.cpp b/modules/camera/src/vkcv/camera/CameraManager.cpp index f129f3a248325957cb56470e2547a0146bc7c971..c0525d849095f07b6a6988e26c21dc32674f08f0 100644 --- a/modules/camera/src/vkcv/camera/CameraManager.cpp +++ b/modules/camera/src/vkcv/camera/CameraManager.cpp @@ -184,9 +184,13 @@ namespace vkcv::camera { } } + bool CameraManager::cameraHasController(uint32_t cameraIndex) { + return (m_cameraControllerTypes[cameraIndex] != ControllerType::NONE); + } + void CameraManager::update(double deltaTime) { m_frameTime = deltaTime; - if (glfwGetWindowAttrib(m_window.getWindow(), GLFW_FOCUSED) == GLFW_TRUE) { + if ((glfwGetWindowAttrib(m_window.getWindow(), GLFW_FOCUSED) == GLFW_TRUE) && cameraHasController(getActiveCameraIndex())) { getActiveController().updateCamera(deltaTime, getActiveCamera()); } }