/// <summary> /// Removes receiver from the list of receivers. /// </summary> /// <param name="receiver"></param> public static void RemoveReceiver(IEventMessageReceiver receiver) { var receiverMessageType = GetRecieverMessageType(receiver); if (receivers.ContainsKey(receiverMessageType) && receivers[receiverMessageType] != null) { receivers[receiverMessageType].Remove(receiver); } }
/// <summary> /// Adds receiver to the list of receivers. /// </summary> /// <param name="receiver"></param> public static void AddReceiver(IEventMessageReceiver receiver) { var receiverMessageType = GetRecieverMessageType(receiver); if (!receivers.ContainsKey(receiverMessageType)) { receivers.Add(receiverMessageType, new HashSet <IEventMessageReceiver>()); } receivers[receiverMessageType].Add(receiver); }
private static Type GetRecieverMessageType(IEventMessageReceiver receiver) { var recieverType = receiver.GetType().BaseType; if (recieverType != null) { var genArgs = recieverType.GetGenericArguments(); if (genArgs.Length > 0) { return(genArgs[0]); } } Debug.LogError("Can't find base MessageReceiver for this type"); return(null); }