As requested.
DirectInput-only controllers are already getting rarer and rarer. Plus, this branch makes all controllers faster & simpler to rebind. I'd even argue these get in the way, because you can't just immediately bind a DInput controller from boot-up, you have to unbind everything first.
I'm not against a new code path for DInput defaults that tries to guess what kind of controller you have, but I don't care about it myself.
Add options to change how fast the analog sensitivity is for yaw & pitch.
Why not use the existing axis sensitivity options? Because they can change how the deadzones and input response preform, and you have to balance several options. In my opinion, those sensitivity options should be for full-on stick calibration (if your stick is not outputting the full range, for instance). But how fast the player should be able to look around is up to the user's taste, regardless of the stick they're using. This also helps make it match up with how mouse sensitivity is split up (i.e: device sensitivity vs game logic sensitivity)
Default analog pitch sensitivity has been drastically lowered, from 2048 (x1.6 yaw sensitivity) to 768 (x0.6 of yaw sensitivity). I don't think I've ever heard of any FPS game on controller before that makes pitch more sensitive than yaw... it is either the same or lower, because players typically want to stay looking in the horizon, and analog stick isn't precise enough to treat them evenly (let alone more sensitive). IMO this is a lot more playable, but I can change the default back to match older versions if that is preferred.
- Combined the functions that handle dead zone, digital threshold, and response curves together.
- A lot less copy-paste between the different platforms.
- Combine the X and Y settings for dead zone, digital threshold, and response curve for analog sticks. This fixes many issues:
- The dead zone shape for sticks are now a true circle, instead of being axial.
- The new response curves work better when moving diagonally. Previously, it'd nerf your move speed up to ~60-50% if you had it on anything but Linear.
- Refactored the new POSIX SDL gamepad axis code to work more like Windows' XInput code. This comes with the following benefits:
- Right thumbstick should function now.
- Left thumbstick now sends the gamepad keycodes instead of raw joystick keycodes.
- Added `stat analog`, to display current movement analog stick values. (I've needed it a lot lately.)
The main benefit of this is to remove the requirement of going to the gamepad menu for binding analog sticks, and going to a keybinds menu for binding literally everything else; now it's all bound in the same location.
This also means that axes can both register as a digital button press, and be used as an analog value for movement separately. Before, using analog movement would not register BT_FORWARD, BT_BACK, etc
cecd34301d Delay load DPI-related functions
bfc172f702 Added exception to some unimplemented functions
7c8d469bcb Added item modifications functions
847d0e6d9e Improved keyboard navigation
8c4270e0f8 Dropdown can now be closed by re-selecting it
91402c31ec Fix dropdown positioning in x11 and win32
git-subtree-dir: libraries/ZWidget
git-subtree-split: cecd34301d369400227eb0f27bad2ab41ad756d2
Previously hosts would clear this data after executing which cannot be done as this will fundamentally break retransmissions when playing in packet-server mode.
* Moved subtree scripts to tools, updated bash script for granularity
* Squashed 'libraries/ZWidget/' changes from 96501b6ef1..02da8cdc0e
02da8cdc0e Added ListView::GetPreferredWidth, ListView::GetPreferredHeight, ListView::GetMinHeight
04bf153d9d Added event subscriber system
1ce55e5da2 Added Dropdown Known issues: does not hide when parent widget's visibility changes
git-subtree-dir: libraries/ZWidget
git-subtree-split: 02da8cdc0e0ca14443245e0aa5a25b3f8e84928b
Scenario:
- Using `-iwad` to explicitly use an IWAD outside of your search paths
- You have other, older versions hiding in your search paths
- You then change your IWADINFO's BannerColors, cue confusion
Because `IdentifyVersion` does search paths then -iwad, and `ValidateIWADs` iterates them in normal order, the file that gets to determine the IWAD startup settings is whatever file is found on the system instead of the file specifically requested.
Adds a RecursivePath= key for checking subfolders in a given path. Only supports finding direct files and not directories. Currently configs and dehacked aren't supported.
Z-fighting between flat texture and stencil at long distances was occurring, showing up as a "shimmer" at a long distance from the camera. Just increasing the vertical shift of flat texture.
Addressing this bug: https://github.com/ZDoom/gzdoom/issues/3246