Added a zoom to cursor option to PanCamera - #25285
Open
mbremner wants to merge 5 commits into
Open
Conversation
…enter and Cursor. Center is set as default and does not change the behavior of PanCamera. Cursor causes the zoom to be focused on the position of the cursor if the cursor is over the window, or the center of the window if the cursor is not over the window.
Contributor
|
Welcome, new contributor! Please make sure you've read our contributing guide, as well as our policy regarding AI usage, and we look forward to reviewing your pull request shortly ✨ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added a ZoomTarget enum to the PanCamera struct, with two variants: Center and Cursor. Center is set as default and does not change the behavior of PanCamera. Cursor causes the zoom to be focused on the position of the cursor if the cursor is over the window, or the center of the window if the cursor is not over the window.
Objective
In my experience, most CAD / GIS software zooms towards (and away from) the cursor. This PR adds this functionality as an option for the PanCamera Plugin.
Solution
Added an enum to the PanCamera Struct. Added input parameters and code to the run_pancamera_controller system, so that it computes the world distance between the center of the viewport and the cursor, then computes the difference in this distance due to the zoom and pans the camera to compensate.
Testing
I have only tested this change visually by running the PanCameraController Example with this option turned on and off. It looks correct to me.
I have also only tested it on my windows machine.
I am not sure how to test it more deeply than a visual inspection.
For reviewers to test it (visually) they would need to create a PanCamera struct and populate the zoom_target field with; ZoomTarget::Cursor (or ZoomTarget::Center to test the previous behaviour).
Showcase
Here is a short video of the new behaviour:
2026-08-03.09-42-05.mp4