using UnityEngine; using UnityEngine.InputSystem; namespace SepCore.InputModule.Runtime { public static class InputModuleDefaultActions { public static InputActionAsset Create() { InputActionAsset asset = ScriptableObject.CreateInstance(); InputActionMap globalMap = new InputActionMap(nameof(InputContextId.Global)); AddPauseAction(globalMap); asset.AddActionMap(globalMap); InputActionMap uiMap = new InputActionMap(nameof(InputContextId.UI)); AddNavigateAction(uiMap, nameof(InputActionId.Navigate)); AddButtonAction(uiMap, nameof(InputActionId.Confirm), "/enter", "/numpadEnter", "/buttonSouth"); AddButtonAction(uiMap, nameof(InputActionId.Cancel), "/escape", "/backspace", "/buttonEast"); asset.AddActionMap(uiMap); InputActionMap gameplayExploreMap = new InputActionMap(nameof(InputContextId.GameplayExplore)); AddNavigateAction(gameplayExploreMap, nameof(InputActionId.Move)); AddButtonAction(gameplayExploreMap, nameof(InputActionId.Sprint), "/leftShift", "/leftStickPress"); AddButtonAction(gameplayExploreMap, nameof(InputActionId.Interact), "/e", "/buttonSouth"); asset.AddActionMap(gameplayExploreMap); InputActionMap dialogMap = new InputActionMap(nameof(InputContextId.Dialog)); AddNavigateAction(dialogMap, nameof(InputActionId.Navigate)); AddButtonAction(dialogMap, nameof(InputActionId.Confirm), "/enter", "/numpadEnter", "/buttonSouth"); AddButtonAction(dialogMap, nameof(InputActionId.Cancel), "/escape", "/backspace", "/buttonEast"); asset.AddActionMap(dialogMap); InputActionMap rebindMap = new InputActionMap(nameof(InputContextId.Rebind)); asset.AddActionMap(rebindMap); return asset; } private static void AddPauseAction(InputActionMap map) { AddButtonAction(map, nameof(InputActionId.Pause), "/escape", "/start"); } private static void AddButtonAction(InputActionMap map, string actionName, params string[] bindings) { InputAction action = map.AddAction(actionName, InputActionType.Button); foreach (string binding in bindings) { action.AddBinding(binding); } } private static void AddNavigateAction(InputActionMap map, string actionName) { InputAction action = map.AddAction(actionName, InputActionType.Value); action.expectedControlType = "Vector2"; action.AddCompositeBinding("2DVector") .With("Up", "/w") .With("Down", "/s") .With("Left", "/a") .With("Right", "/d"); action.AddCompositeBinding("2DVector") .With("Up", "/upArrow") .With("Down", "/downArrow") .With("Left", "/leftArrow") .With("Right", "/rightArrow"); action.AddBinding("/leftStick"); } } }