From a51226bebbb8bf8ab77f1ad55f1c7fac99226db7 Mon Sep 17 00:00:00 2001 From: iforce2d Date: Sun, 14 Dec 2025 12:19:07 +1300 Subject: [PATCH] Preserve world position of mouse cursor after scroll zoom in samples app --- samples/main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/samples/main.cpp b/samples/main.cpp index 9725daf53..3da3c41c4 100644 --- a/samples/main.cpp +++ b/samples/main.cpp @@ -378,6 +378,11 @@ static void ScrollCallback( GLFWwindow* window, double dx, double dy ) return; } + double xd, yd; + glfwGetCursorPos( window, &xd, &yd ); + b2Vec2 ps = { float( xd ), float( yd ) }; + b2Vec2 pwBefore = ConvertScreenToWorld( &s_context.camera, ps ); + if ( dy > 0 ) { s_context.camera.zoom /= 1.1f; @@ -386,6 +391,10 @@ static void ScrollCallback( GLFWwindow* window, double dx, double dy ) { s_context.camera.zoom *= 1.1f; } + + b2Vec2 pwAfter = ConvertScreenToWorld( &s_context.camera, ps ); + b2Vec2 delta = pwAfter - pwBefore; + s_context.camera.center -= delta; } static void UpdateUI()