/// <summary> /// Register a handler for a particular message type. /// <para>There are several system message types which you can add handlers for. You can also add your own message types.</para> /// </summary> /// <typeparam name="T">Message type</typeparam> /// <param name="handler">Function handler which will be invoked for when this message type is received.</param> public void RegisterHandler <T>(MessageDelegateWithPlayer <T> handler) { int msgType = MessagePacker.GetId <T>(); if (logger.filterLogType == LogType.Log && messageHandlers.ContainsKey(msgType)) { logger.Log($"RegisterHandler replacing {msgType}"); } messageHandlers[msgType] = MessageWrapper(handler); }
private static NetworkMessageDelegate MessageWrapper <T>(MessageDelegateWithPlayer <T> handler) { void AdapterFunction(INetworkPlayer player, NetworkReader reader) { T message = NetworkDiagnostics.ReadWithDiagnostics <T>(reader); handler.Invoke(player, message); } return(AdapterFunction); }