73 lines
3.3 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|
|
|