コード例 #1
0
 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;
     }
 }
コード例 #2
0
        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;
            }
        }