public void RegisterTrackKey(KeyCode key, KeyInteraction interaction, Action callback) { KeyInput keyInput = trackedKeys.Find(x => x.keyCode == key && x.keyInteraction == interaction); if (keyInput == null) { trackedKeys.Add(new KeyInput(key, interaction, callback)); } else { keyInput.callback += callback; } }
public void DeregisterTrackKey(KeyCode key, KeyInteraction interaction, Action callback) { KeyInput keyInput = trackedKeys.Find(x => x.keyCode == key && x.keyInteraction == interaction); if (keyInput != null) { if (keyInput.callback.GetInvocationList().Length == 1) { trackedKeys.Remove(keyInput); } else { keyInput.callback -= callback; } } }
public KeyInput(KeyCode keyCode, KeyInteraction keyInteraction, Action callback) { this.keyCode = keyCode; this.keyInteraction = keyInteraction; this.callback = callback; }