public void TriggerKeyEvent(int key, int inputType) { if (!keyEvents.ContainsKey(key) || !keyEvents[key].ContainsKey(inputType)) { return; } for (int i = keyEvents[key][inputType].Count - 1; i >= 0; i--) { bool inputTriggered = false; KeyCode keyCode = (KeyCode)key; InputPressType typeEnum = (InputPressType)inputType; switch (typeEnum) { case InputPressType.DOWN: if (Input.GetKeyDown(keyCode)) { inputTriggered = true; } break; case InputPressType.HOLD: if (Input.GetKey(keyCode)) { inputTriggered = true; } break; case InputPressType.UP: if (Input.GetKeyUp(keyCode)) { inputTriggered = true; } break; } if (inputTriggered) { keyEvents[key][inputType][i].InputCallback(); if (!keyEvents[key][inputType][i].permanent) { keyEvents[key][inputType].RemoveAt(i); } } } }
public void AddNewInput <T>(IInputCallback <T> iCB, T cbParam, KeyCode key, InputPressType iT, bool perm = false) { int kId = (int)key; int inputType = (int)iT; if (!keyEvents.ContainsKey(kId)) { keyEvents.Add(kId, new Dictionary <int, List <InputDataBase> >()); } if (!keyEvents[kId].ContainsKey((int)iT)) { keyEvents[kId].Add(inputType, new List <InputDataBase>()); } keyEvents[kId][inputType].Add(new InputData <T>(cbParam, iCB, key, inputType, perm)); //return iS.Add(new InputData<T>(cbParam, iCB, key, iT, perm)); }