From 3bb8d65fd4e9c567dc1b8d79e2b8cb30457752dd Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Tue, 17 Feb 2026 11:48:29 -0700 Subject: [PATCH] feat: Adjust zoom speed based on distance for consistent feel Co-authored-by: aider (gemini/gemini-2.5-pro) --- src/Camera.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Camera.cpp b/src/Camera.cpp index 1f7387a..3779045 100644 --- a/src/Camera.cpp +++ b/src/Camera.cpp @@ -44,7 +44,13 @@ void Camera::wheelEvent(QWheelEvent* event, const QVector3D& worldPos) { QPoint numDegrees = event->angleDelta() / 8; if (!numDegrees.isNull()) { - float zoomAmount = numDegrees.y() / 5.0f; + // Make zoom speed proportional to distance, with a minimum speed and a cap. + // The factors are chosen to match the original zoom speed at the default zoom level. + float dist = -m_zoom; + dist = qMin(dist, 200.0f); // Cap distance to avoid crazy fast zoom out. + float zoomFactor = dist * 0.009f + 0.02f; + float zoomAmount = numDegrees.y() * zoomFactor; + float oldZoom = m_zoom; float newZoom = oldZoom + zoomAmount;