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
Make input actions case insensitive when grabbing index
Warn users when they try to evaluate input actions that don't exist
Made Input.GetButtonOrigin( string action ) case insensitive, and warn if we couldn't find an action
Add data annotation to InputAction.Name, no special characters or spaces
Work on restyling actions editor page
https://files.facepunch.com/devultj/1b0111b1/sbox_KuuMG1jZ7f.png
Group MouseCode + KeyboardCode together, show friendly enum names for codes
Don't use ordinal directions for dpad gamepad codes, use up/down/left/right
Refactor how we collect info for SteamInput manifests - triggers behave differently to other buttons, and are only specified as individual trigger buttons in group source bindings - now we return everything correctly.
https://files.facepunch.com/devultj/1b0111b1/steamwebhelper_o7KhdJHyKI.png
Let's see what happens when we forward all InputButtons to use Actions - this doesn't include generating a default action set yet
Fixed menu not compiling
Pack input actions into InputActionSettings class, add UseDefaultActions
Proof of concept of creating default input actions for games. I think it's too magic though. We should just add all of the common inputs when you open the editor window.
Remove TryCreateDefaultActions, just create default actions in Editor InputPage if we have no actions
Refactor, register common actions if we don't have any defined in a project
Add missing "View" common input
Add support for Left/Right joystick clicks as actions
Set Run/View gamepad codes since it's supported now
Don't bother matching modifiers if there aren't any on the current action
Separate Left/Right menu switches, add support for "Menu" legacy action
Re-add ClearButtons but mark it as obsolete so we don't break current packages
Missed another method here
Add BaseWindow.OnWindowClosed event
Update action when edit window gets closed, add border to actions with no button defined
Minor cleanup
Make obsolete ClearButtons clear actions for now
UsingController reports correct info again. remove LastInputWasController