From ab550ac1c7b345cefa88af82e1888a685af7c993 Mon Sep 17 00:00:00 2001
From: Vanessa Karolek <vaka1997@uni-koblenz.de>
Date: Wed, 23 Jun 2021 18:02:56 +0200
Subject: [PATCH] [#60][Fix] fix scroll input bug

Fixed scroll input being not considered if a gamepad is connected
---
 modules/camera/src/vkcv/camera/PilotCameraController.cpp  | 5 +++++
 .../camera/src/vkcv/camera/TrackballCameraController.cpp  | 8 ++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/modules/camera/src/vkcv/camera/PilotCameraController.cpp b/modules/camera/src/vkcv/camera/PilotCameraController.cpp
index 45a9dc3d..5460858a 100644
--- a/modules/camera/src/vkcv/camera/PilotCameraController.cpp
+++ b/modules/camera/src/vkcv/camera/PilotCameraController.cpp
@@ -25,6 +25,11 @@ namespace vkcv::camera {
     }
 
     void PilotCameraController::changeFov(double offset, Camera &camera){
+        // update only if there is (valid) input
+        if (offset == 0.0) {
+            return;
+        }
+
         float fov = camera.getFov();
         float fov_range = m_fov_max - m_fov_min;
         float fov_stepsize = glm::radians(fov_range) / static_cast<float>(m_fov_nsteps);
diff --git a/modules/camera/src/vkcv/camera/TrackballCameraController.cpp b/modules/camera/src/vkcv/camera/TrackballCameraController.cpp
index f2652e94..cdd66cdb 100644
--- a/modules/camera/src/vkcv/camera/TrackballCameraController.cpp
+++ b/modules/camera/src/vkcv/camera/TrackballCameraController.cpp
@@ -32,10 +32,15 @@ namespace vkcv::camera {
     }
 
     void TrackballCameraController::updateRadius(double offset, Camera &camera) {
+        // update only if there is (valid) input
+        if (offset == 0.0) {
+            return;
+        }
+
         glm::vec3 cameraPosition = camera.getPosition();
         glm::vec3 cameraCenter = camera.getCenter();
         float radius = glm::length(cameraCenter - cameraPosition);  // get current camera radius
-        setRadius(radius - offset * m_scrollSensitivity);
+        setRadius(radius - static_cast<float>(offset) * m_scrollSensitivity);
     }
 
     void TrackballCameraController::updateCamera(double deltaTime, Camera &camera) {
@@ -109,6 +114,5 @@ namespace vkcv::camera {
         double leftYVal = glm::clamp((abs(stickLeftY)-threshold), 0.0, 1.0)
                 * std::copysign(1.0, stickLeftY) * sensitivity * frametime;
         updateRadius(-leftYVal, camera);
-        
     }
 }
\ No newline at end of file
-- 
GitLab