using NativeEngine; using Sandbox.Engine; using System; namespace Sandbox; public static partial class MenuUtility { /// /// Allows to menu addon to interact with input configuration /// public static class Input { public static IReadOnlyList GetCommonInputs() => Sandbox.Engine.Input.CommonInputs; public static string GetBind( string group, string actionName, int slot, out bool isDefault ) { isDefault = false; var collection = Sandbox.Engine.InputBinds.FindCollection( group ); if ( collection != null ) { var buttons = collection.Get( actionName, slot ); if ( !string.IsNullOrWhiteSpace( buttons ) ) return buttons; } return null; } public static void ResetBinds( string group ) { var collection = InputBinds.FindCollection( group ); collection.ResetToDefaults(); } public static void SetBind( string group, string actionName, string buttonName, int slot ) { var collection = InputBinds.FindCollection( group ); collection.Set( actionName, slot, buttonName ); } public static void SaveBinds( string group ) { var collection = InputBinds.FindCollection( group ); collection.SaveToDisk(); } /// /// For binding reasons, get a list of buttons that are currently pressed /// public static void TrapButtons( Action callback ) { Game.InputContext.StartTrapping( callback ); } } }