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