1 Year Ago
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