Rough project-defined input actions proof of concept https://files.facepunch.com/devultj/1b2111b1/sbox_OnFnajwsBR.png
Moved InputAction stuff out of Sandbox.Engine, remove gamepad related stuff for now
Store input actions as they happen, add `Input.Down( string action )`
Rip out some splitscreen code that was swallowing button released events from ClientDll
Store input actions in uint64_t, bundle in user command, now they can be read in Simulate context
Fixed LastActions getting lost because CUserCmd wasn't grabbing it
Added Input.Pressed and Input.Released for custom actions
Make ButtonCode internal again
Revert ButtonCode access modifier change for now
Experiment: Generate our own SteamInput action manifest at runtime w/ user defined actions included
Load input manifest when we grab input actions
Loop through available actions on Input.Process, check action state and set accordingly
Fixed issue where controller actions were stomping keyboard actions - now we store previous controller actions, clear pressed actions, then check via SteamInput
Codegen gamepad manifest which allows InputActions to be processed by SteamInput. Support activators (full press, double press for now). Have to figure out eliminating default binds. https://files.facepunch.com/devultj/1b0211b1/Code_V3N9DYtXZH.png
Add gamepad specific properties to InputActionPage https://files.facepunch.com/devultj/1b0211b1/sbox_SV5HighWBa.png
Refactor to use Action Set Layers https://files.facepunch.com/devultj/1b0211b1/steamwebhelper_tmcW41uhRr.png
SteamInput: Generate group source bindings in gamepad manifest, which now links the groups properly and lets us set our action bindings. Make GroupEntry constructor internal.
Get glyphs working with Input Actions, added Input.GetButtonOrigin( string action ), Input.GetGlyph( string action, ... )
https://files.facepunch.com/devultj/1b0511b1/og0aKbvpTS.png
Add support for displaying keyboard binding for input actions w/ GetButtonOrigin
https://files.facepunch.com/devultj/1b0511b1/sbox_aFn6pH6wV3.png
Restrict some keys from being used as input actions (windows keys, function keys, caps lock, etc), added readable titles for editor
Code cleanup, made a bunch of stuff internal
Don't try to pass NativeEngine.ButtonCode to Sandbox.Input.OnButton. Gets rid of needless casting further down the line
If we don't have any keyboard modifiers set, let people press them and still recognize that input - ex: when sprinting and hitting an input action, we'd reject it.
Made OnButton internal while we're at it
Default to FullPress activator if we didn't specify a default activator
Minor Editor changes, remove notion of "custom"
Moved generated manifests to .source2
Remove Gamepad.Activator as it doesn't serve much purpose right now
Add StringQuery
Restyled Inputs page https://files.facepunch.com/devultj/1b0711b1/sbox_LLtHZF0hOR.png
Documentation pass on all new input action classes
If input actions use the same keyboard code, process all of them instead of just the first action we find.
Regenerate SteamInput manifest when we update input actions via Project Settings, so you don't have to restart the game
Don't try to generate manifest entries when gamepad code hasn't been set
Improve action editor flow - allow user to set name of input action before creating it https://files.facepunch.com/devultj/1b1411b1/sbox_PAW03WHtVM.png
Expose Left Shift, Alt, Ctrl codes as usable by games
Editor: Fix layout getting screwed up when adding/removing actions (cheers @cr4yz)
Fixed buttons w/ keyboard modifiers activating when no keyboard modifiers are pressed
Better fix for the previous commit, and stops instances of buttons getting stuck as pressed
For now, only pump input action events when we don't need keyboard input for UI - in the future we'll ideally have an action set for the UI layer for games. This fixes input actions firing when pointer-events are enabled.
Add MouseCode, support being able to pick a mouse button for an input action - support keyboard modifiers with them (shift + right click, stuff like that)
If we have pointer events in MenuDll, don't pass down mouse click events to ClientDll
Strip keyboard modifiers for buttons that are actual keyboard modifiers - fixes Ctrl, Alt, Shift actions not functioning. Might be better to handle this in native inputsystem instead.
Update InputPage to use ExpandGroup and not my own implementation of what is pretty much the same thing
Make standard ExpandGroup toggle require left mouse click, not any (useful for when you've got a context menu)
Fixed InputActionPanel not updating title on rename
Remove stretch cell from actions tree footer, add label to the button that adds actions