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