//Three parameters static public void Broadcast <T, U, V>(EventName eventType, T arg1, U arg2, V arg3) { #if LOG_ALL_MESSAGES || LOG_BROADCAST_MESSAGE Debug.Log("MESSENGER\t" + System.DateTime.Now.ToString("hh:mm:ss.fff") + "\t\t\tInvoking \t\"" + eventType + "\""); #endif OnBroadcasting(eventType); Delegate d; if (eventTable.TryGetValue(eventType, out d)) { CallbackMessenger <T, U, V> callback = d as CallbackMessenger <T, U, V>; if (callback != null) { callback(arg1, arg2, arg3); } else { throw CreateBroadcastSignatureException(eventType); } } }
//Three parameters static public void RemoveListener <T, U, V>(EventName eventType, CallbackMessenger <T, U, V> handler) { OnListenerRemoving(eventType, handler); eventTable[eventType] = (CallbackMessenger <T, U, V>)eventTable[eventType] - handler; OnListenerRemoved(eventType); }
//Three parameters static public void AddListener <T, U, V>(EventName eventType, CallbackMessenger <T, U, V> handler) { OnListenerAdding(eventType, handler); eventTable[eventType] = (CallbackMessenger <T, U, V>)eventTable[eventType] + handler; }