-
Notifications
You must be signed in to change notification settings - Fork 99
[DO NOT MERGE] Restoration of game_control support from archive/develop #5193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop-linux
Are you sure you want to change the base?
Conversation
d8f9447 to
06b3c90
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request restores gamepad support functionality from the archive/develop branch by implementing a comprehensive game_control system using SDL3.
- Adds SDL3-based game controller detection and management
- Implements gamepad input translation for avatar/camera control
- Provides UI for configuring game controller mappings and device settings
Reviewed changes
Copilot reviewed 71 out of 74 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| indra/newview/tests/llgamecontrol_stub.cpp | Stub implementation for testing (has SDL2 reference that should be SDL3) |
| indra/newview/llagent.{h,cpp} | Adds game control integration for avatar movement and flycam |
| indra/newview/llflycam.{h,cpp} | New flycam control class for camera manipulation |
| indra/newview/llfloaterpreference.{h,cpp} | Extensive game control preferences UI implementation |
| indra/newview/llviewerjoystick.{h,cpp} | Integration with 3DConnexion device detection |
| indra/llwindow/llgamecontrol.h | Core game control API and data structures |
| indra/llwindow/llgamecontroltranslator.{h,cpp} | Translation between game control and avatar actions |
| indra/llwindow/llwindow*.{h,cpp} | Window system integration for game control events |
| indra/llwindow/llkeyboard*.{h,cpp} | Keyboard API updates for modifier handling |
| indra/newview/skins/default/xui/en/*.xml | UI definitions for game control preferences |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
06b3c90 to
4ed9c7c
Compare
avatar_motion-->GameControl translation and flycam more GameControl prefs UI Add GameControl UI for per device settings put GameControl behind a feature flag add enable_game_control checkbox to GameControl prefs more correct AgentUpdate transmission logic even more correct GameControl feature-flag switch more correct application of GameControl prefs remove crashy LLSD ctor used by GameControl fix GameControl save settings, fix linux build Port to SDL3 api and fix linux event handling Fix issues with game control preferences: * Add missing names for controls to make content localizable * Fix labels for controls that are obviously wrong/make no sense Signed-off-by: Rye <rye@alchemyviewer.org>
Fix releaseGameControlButton to use bitwise op correctly Fix gamecontrol_stub comment and SDL3 include Signed-off-by: Rye <rye@alchemyviewer.org>
209b7bb to
28996b6
Compare
AndrewMeadows
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm delighted to see this code resurrected. All of my feedback is just suggestions.
To be clear: this PR should not be merged until after the develop-linux branch is merged, because we don't want to block the Linux changes with the game_control feature. After develop-linux is merged we should re-target this PR to aim at develop.
indra/llwindow/llgamecontrol.cpp
Outdated
|
|
||
| // construct LLSD version of g_deviceOptions but only include non-empty values | ||
| LLSD deviceOptions = LLSD::emptyMap(); | ||
| for (const auto& data_pair : g_deviceOptions) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since first writing this I've learned: structured bindings in for loops over containers can make for more readable code. Therefore: for bonus points use: for (const auto& (guid, options) : g_device_options).
Game Control code cleanup
Description
This pull request aims to restore the efforts at improving gamepad support via the game_control functionality from the
archive/developbranchRelated Issues
Issue Link:
Checklist
Please ensure the following before requesting review:
Additional Notes