vampire-like/Assets/Plugins/InputModule/Runtime/InputModuleDefaultActions.cs

73 lines
3.3 KiB
C#

using UnityEngine;
using UnityEngine.InputSystem;
namespace SepCore.InputModule.Runtime
{
public static class InputModuleDefaultActions
{
public static InputActionAsset Create()
{
InputActionAsset asset = ScriptableObject.CreateInstance<InputActionAsset>();
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), "<Keyboard>/enter", "<Keyboard>/numpadEnter", "<Gamepad>/buttonSouth");
AddButtonAction(uiMap, nameof(InputActionId.Cancel), "<Keyboard>/escape", "<Keyboard>/backspace", "<Gamepad>/buttonEast");
asset.AddActionMap(uiMap);
InputActionMap gameplayExploreMap = new InputActionMap(nameof(InputContextId.GameplayExplore));
AddNavigateAction(gameplayExploreMap, nameof(InputActionId.Move));
AddButtonAction(gameplayExploreMap, nameof(InputActionId.Sprint), "<Keyboard>/leftShift", "<Gamepad>/leftStickPress");
AddButtonAction(gameplayExploreMap, nameof(InputActionId.Interact), "<Keyboard>/e", "<Gamepad>/buttonSouth");
asset.AddActionMap(gameplayExploreMap);
InputActionMap dialogMap = new InputActionMap(nameof(InputContextId.Dialog));
AddNavigateAction(dialogMap, nameof(InputActionId.Navigate));
AddButtonAction(dialogMap, nameof(InputActionId.Confirm), "<Keyboard>/enter", "<Keyboard>/numpadEnter", "<Gamepad>/buttonSouth");
AddButtonAction(dialogMap, nameof(InputActionId.Cancel), "<Keyboard>/escape", "<Keyboard>/backspace", "<Gamepad>/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), "<Keyboard>/escape", "<Gamepad>/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", "<Keyboard>/w")
.With("Down", "<Keyboard>/s")
.With("Left", "<Keyboard>/a")
.With("Right", "<Keyboard>/d");
action.AddCompositeBinding("2DVector")
.With("Up", "<Keyboard>/upArrow")
.With("Down", "<Keyboard>/downArrow")
.With("Left", "<Keyboard>/leftArrow")
.With("Right", "<Keyboard>/rightArrow");
action.AddBinding("<Gamepad>/leftStick");
}
}
}