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