/// <summary> /// Unregisters the given listeners action. /// </summary> public void UnregisterEvent(IInputActionListener listener, Action <InputEventArgs> action) { string actionName = action.Method.Name; List <ListenerInfo> infoList = ListenerDictionary[actionName]; infoList.RemoveAll(info => info.ActionListener == listener && info.Action.Method.Name == actionName); }
/// <summary> /// Registers an action event to input. /// </summary> /// <param name="listener">The listener owning the action.</param> /// <param name="action">The action method which will be called.</param> public void RegisterEvent(IInputActionListener listener, Action <InputEventArgs> action) { string actionName = action.Method.Name; if (ListenerDictionary.ContainsKey(actionName) == false) { ListenerDictionary.Add(actionName, new List <ListenerInfo>()); } List <ListenerInfo> infoList = ListenerDictionary[actionName]; infoList.Add(new ListenerInfo(listener, action)); infoList.Sort((l1, l2) => l1.ActionListener.Priority.CompareTo(l2.ActionListener.Priority) * -1); }
public ListenerInfo(IInputActionListener actionListener, Action <InputEventArgs> action) { ActionListener = actionListener; Action = action; }