-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInputHandler.cs
More file actions
75 lines (61 loc) · 2.18 KB
/
Copy pathInputHandler.cs
File metadata and controls
75 lines (61 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem;
public class InputHandler : MonoBehaviour
{
[SerializeField]
private InputActionAsset actionAsset;
[SerializeField]
private List<string> holdAbleActionNames;
[SerializeField]
private string defaultActionMap;
private static Dictionary<string, bool> buttons = new Dictionary<string, bool>();
public static Dictionary<string, List<Action>> holdAbleOnEvent = new Dictionary<string, List<Action>>();
public static Dictionary<string, List<Action>> holdAbleOffEvent = new Dictionary<string, List<Action>>();
public static Dictionary<string, List<Action>> buttonDownEvent = new Dictionary<string, List<Action>>();
private void Awake()
{
actionAsset.Enable();
InputActionMap map = actionAsset.FindActionMap(defaultActionMap);
map.Enable();
foreach (string button in holdAbleActionNames)
{
buttons.Add(button, false);
map.FindAction(button).performed += (x) => HoldAbleButton(button, x);
map.FindAction(button).canceled += (x) => HoldAbleButton(button, x);
}
holdAbleOnEvent.Clear();
holdAbleOffEvent.Clear();
buttonDownEvent.Clear();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void LateUpdate()
{
}
public void HoldAbleButton(string button, InputAction.CallbackContext context)
{
buttons[button] = context.ReadValue<float>() > 0.5f;
if (buttons[button])
{
if(holdAbleOnEvent.ContainsKey(button))
foreach (Action action in holdAbleOnEvent[button])
action.Invoke();
if (buttonDownEvent.ContainsKey(button))
foreach (Action action in buttonDownEvent[button])
action.Invoke();
}
else if (!buttons[button] && holdAbleOffEvent.ContainsKey(button))
foreach (Action action in holdAbleOffEvent[button])
action.Invoke();
}
}