public void Add <T>(MEvents.EventDelegate <T> listener) where T : MetaEvent { Remove(listener); // Questionable - Though, seems to have done the trick... Performance impact likely... Short story: prevents the same function from being added multiple times as a listener if (_delegates.TryGetValue(typeof(T), out var currentDelegate)) { _delegates[typeof(T)] = Delegate.Combine(currentDelegate, listener); } else { _delegates[typeof(T)] = listener; } }
public void Remove <T>(MEvents.EventDelegate <T> listener) where T : MetaEvent { if (!_delegates.TryGetValue(typeof(T), out _)) { return; } var resultingDelegate = Delegate.Remove(_delegates[typeof(T)], listener); if (resultingDelegate == null) { _delegates.Remove(typeof(T)); } else { _delegates[typeof(T)] = resultingDelegate; } }