Ratty camera protocol#118
Open
Nomagno wants to merge 8 commits into
Open
Conversation
Add an RGP extension to support controlling the camera Remove unused parameters
This was referenced Jun 27, 2026
orhun
reviewed
Jun 30, 2026
orhun
left a comment
Owner
There was a problem hiding this comment.
thanks for the PR! I have pushed a cleanup commit and have a small question about one of the parts :)
| camera_slots.slots[camera_slot as usize].0.yaw = rx; | ||
| } | ||
| if let Some(_ry) = settings.rotation[1] { | ||
| /*camera_slots.slots[camera_slot as usize].0.roll = ry;*/ |
Contributor
Author
There was a problem hiding this comment.
Ah, my bad, should've mentioned this as an open implementation question! It's because ratty's camera doesn't currently have the capability to be rolled by the user, it has 2 axis rotation. If I allowed to actually change the roll, the user would have no intuitive way to correct it afterwards with the mouse 😅
There's several solutions, ignoring roll inputs from the Ratty Camera Protocol is the one that seemed safest for a first implementation.
| RgpOperation::Camera { | ||
| camera_slot, switch_immediately, settings | ||
| } => { | ||
| //info!("camera settings for slot {}: set {}; rotation: ({},{},{})", camera_slot, switch_immediately, settings.rotation[0].unwrap_or(0.0), settings.rotation[1].unwrap_or(0.0), settings.rotation[2].unwrap_or(0.0)); |
Owner
There was a problem hiding this comment.
Please remove the commented out code :)
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.
Hey!
Ctrl + Alt + O -> Regular orthographic view
Ctrl + Alt + P -> New perspective view ('videogame camera' style)
Basically, both cameras are created at startup, but only the requested one is activated in Bevy. Not sure if this might suppose a performance penalty. I am also not an expert in Rust nor Bevy, so sorry if something's improvable 😅. I also refactored a bunch of
matchstatements into comparisons againstis_3d()where I thought it might be reasonable, since 3 long enum values per arm seemed silly once I added the newPersp3dmode (I can revert this if needed).Additionally:
The ratty graphics protocol is expanded as per the update to
protocols/graphics.md, with the corresponding implementation. The rendering and input processing pipeline is reordered in order to allow the applications and the user to control the camera at once harmoniously. I am not a Rust expert, and would, in general, appreciate feedback on the architecture and style.Missing: better documentation of the code, add support for the features described here to the big rat demo, and perhaps add
Ctrl+Alt+[0-9]bindings for manually changing to the 10 camera slots.Obsoletes #89 and implements #114