Пример #1
0
 internal void HandleRPC(int cmdHash, NetworkReader reader)
 {
     if (base.gameObject == null)
     {
         if (LogFilter.logWarn)
         {
             Debug.LogWarning(string.Concat(new object[] { "ClientRpc [", NetworkBehaviour.GetCmdHashHandlerName(cmdHash), "] received for deleted object ", this.netId }));
         }
     }
     else if (this.m_NetworkBehaviours.Length == 0)
     {
         if (LogFilter.logWarn)
         {
             Debug.LogWarning("No receiver found for ClientRpc [" + NetworkBehaviour.GetCmdHashHandlerName(cmdHash) + "]. Does the script with the function inherit NetworkBehaviour?");
         }
     }
     else
     {
         for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
         {
             NetworkBehaviour behaviour = this.m_NetworkBehaviours[i];
             if (behaviour.InvokeRPC(cmdHash, reader))
             {
                 NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, 2, NetworkBehaviour.GetCmdHashRpcName(cmdHash), 1);
                 return;
             }
         }
         string invoker = NetworkBehaviour.GetInvoker(cmdHash);
         if (invoker == null)
         {
             invoker = "[unknown:" + cmdHash + "]";
         }
         if (LogFilter.logWarn)
         {
             Debug.LogWarning(string.Concat(new object[] { "Failed to invoke RPC ", invoker, "(", cmdHash, ") on netID ", this.netId }));
         }
         NetworkBehaviour.DumpInvokers();
     }
 }
Пример #2
0
        internal void HandleRPC(int cmdHash, NetworkReader reader)
        {
            if (base.gameObject == null)
            {
                if (LogFilter.logWarn)
                {
                    Debug.LogWarning("ClientRpc [" + NetworkBehaviour.GetCmdHashHandlerName(cmdHash) + "] received for deleted object " + netId);
                }
                return;
            }
            if (m_NetworkBehaviours.Length == 0)
            {
                if (LogFilter.logWarn)
                {
                    Debug.LogWarning("No receiver found for ClientRpc [" + NetworkBehaviour.GetCmdHashHandlerName(cmdHash) + "]. Does the script with the function inherit NetworkBehaviour?");
                }
                return;
            }
            for (int i = 0; i < m_NetworkBehaviours.Length; i++)
            {
                NetworkBehaviour networkBehaviour = m_NetworkBehaviours[i];
                if (networkBehaviour.InvokeRPC(cmdHash, reader))
                {
                    return;
                }
            }
            string text = NetworkBehaviour.GetInvoker(cmdHash);

            if (text == null)
            {
                text = "[unknown:" + cmdHash + "]";
            }
            if (LogFilter.logWarn)
            {
                Debug.LogWarning("Failed to invoke RPC " + text + "(" + cmdHash + ") on netID " + netId);
            }
            NetworkBehaviour.DumpInvokers();
        }
Пример #3
0
        internal void HandleRPC(int cmdHash, NetworkReader reader)
        {
            Type invokeClass;

            NetworkBehaviour.CmdDelegate invokeFunction;
            NetworkBehaviour             invokeComponent;

            if (base.gameObject == null)
            {
                string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
                if (LogFilter.logWarn)
                {
                    Debug.LogWarning("ClientRpc [" + cmdHashHandlerName + "] received for deleted object [netId=" + netId + "]");
                }
            }
            else if (!NetworkBehaviour.GetInvokerForHashClientRpc(cmdHash, out invokeClass, out invokeFunction))
            {
                string cmdHashHandlerName2 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
                if (LogFilter.logError)
                {
                    Debug.LogError("Found no receiver for incoming [" + cmdHashHandlerName2 + "] on " + base.gameObject + ",  the server and client should have the same NetworkBehaviour instances [netId=" + netId + "].");
                }
            }
            else if (!GetInvokeComponent(cmdHash, invokeClass, out invokeComponent))
            {
                string cmdHashHandlerName3 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
                if (LogFilter.logWarn)
                {
                    Debug.LogWarning("ClientRpc [" + cmdHashHandlerName3 + "] handler not found [netId=" + netId + "]");
                }
            }
            else
            {
                invokeFunction(invokeComponent, reader);
            }
        }
        static void OnRPCMessage(NetworkMessage netMsg)
        {
            RpcMessage message = netMsg.ReadMessage <RpcMessage>();

            if (LogFilter.logDebug)
            {
                Debug.Log("ClientScene::OnRPCMessage hash:" + message.rpcHash + " netId:" + message.netId);
            }

            NetworkIdentity uv;

            if (s_NetworkScene.GetNetworkIdentity(message.netId, out uv))
            {
                uv.HandleRPC(message.rpcHash, new NetworkReader(message.payload));
            }
            else
            {
                if (LogFilter.logWarn)
                {
                    string errorRpcName = NetworkBehaviour.GetCmdHashHandlerName(message.rpcHash);
                    Debug.LogWarningFormat("Could not find target object with netId:{0} for RPC call {1}", message.netId, errorRpcName);
                }
            }
        }
Пример #5
0
        private static void OnSyncListMessage(NetworkMessage netMsg)
        {
            NetworkIdentity   identity;
            NetworkInstanceId netId = netMsg.reader.ReadNetworkId();
            int cmdHash             = (int)netMsg.reader.ReadPackedUInt32();

            if (LogFilter.logDebug)
            {
                Debug.Log("ClientScene::OnSyncListMessage " + netId);
            }
            if (s_NetworkScene.GetNetworkIdentity(netId, out identity))
            {
                identity.HandleSyncList(cmdHash, netMsg.reader);
            }
            else if (LogFilter.logWarn)
            {
                Debug.LogWarning("Did not find target for SyncList message for " + netId);
            }
            NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Outgoing, 9, NetworkBehaviour.GetCmdHashHandlerName(cmdHash), 1);
        }
Пример #6
0
        private static void OnSyncEventMessage(NetworkMessage netMsg)
        {
            int cmdHash             = (int)netMsg.reader.ReadPackedUInt32();
            NetworkInstanceId netId = netMsg.reader.ReadNetworkId();

            if (LogFilter.logDebug)
            {
                Debug.Log((object)("ClientScene::OnSyncEventMessage " + (object)netId));
            }
            NetworkIdentity uv;

            if (ClientScene.s_NetworkScene.GetNetworkIdentity(netId, out uv))
            {
                uv.HandleSyncEvent(cmdHash, netMsg.reader);
            }
            else if (LogFilter.logWarn)
            {
                Debug.LogWarning((object)("Did not find target for SyncEvent message for " + (object)netId));
            }
            NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Outgoing, (short)7, NetworkBehaviour.GetCmdHashHandlerName(cmdHash), 1);
        }