Beispiel #1
0
        // happens on client
        internal void HandleSyncEvent(int cmdHash, NetworkReader reader)
        {
            // this doesn't use NetworkBehaviour.InvokeSyncEvent function (anymore). this method of calling is faster.
            // The hash is only looked up once, insted of twice(!) per NetworkBehaviour on the object.

            if (gameObject == null)
            {
                string errorCmdName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
                if (LogFilter.logWarn)
                {
                    Debug.LogWarning("SyncEvent [" + errorCmdName + "] received for deleted object [netId=" + netId + "]");
                }
                return;
            }

            // find the matching SyncEvent function and networkBehaviour class
            NetworkBehaviour.CmdDelegate invokeFunction;
            Type invokeClass;
            bool invokeFound = NetworkBehaviour.GetInvokerForHashSyncEvent(cmdHash, out invokeClass, out invokeFunction);

            if (!invokeFound)
            {
                // We don't get a valid lookup of the command name when it doesn't exist...
                string errorCmdName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
                if (LogFilter.logError)
                {
                    Debug.LogError("Found no receiver for incoming [" + errorCmdName + "] on " + gameObject + ",  the server and client should have the same NetworkBehaviour instances [netId=" + netId + "].");
                }
                return;
            }

            // find the right component to invoke the function on
            NetworkBehaviour invokeComponent;

            if (!GetInvokeComponent(cmdHash, invokeClass, out invokeComponent))
            {
                string errorCmdName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
                if (LogFilter.logWarn)
                {
                    Debug.LogWarning("SyncEvent [" + errorCmdName + "] handler not found [netId=" + netId + "]");
                }
                return;
            }

            invokeFunction(invokeComponent, reader);

#if UNITY_EDITOR
            UnityEditor.NetworkDetailStats.IncrementStat(
                UnityEditor.NetworkDetailStats.NetworkDirection.Incoming,
                (short)MsgType.SyncEvent, NetworkBehaviour.GetCmdHashEventName(cmdHash), 1);
#endif
        }
 internal void HandleSyncEvent(int cmdHash, NetworkReader reader)
 {
     if ((UnityEngine.Object) this.gameObject == (UnityEngine.Object)null)
     {
         string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
         if (!LogFilter.logWarn)
         {
             return;
         }
         Debug.LogWarning((object)("SyncEvent [" + cmdHashHandlerName + "] received for deleted object [netId=" + (object)this.netId + "]"));
     }
     else
     {
         System.Type invokeClass;
         NetworkBehaviour.CmdDelegate invokeFunction;
         if (!NetworkBehaviour.GetInvokerForHashSyncEvent(cmdHash, out invokeClass, out invokeFunction))
         {
             string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
             if (!LogFilter.logError)
             {
                 return;
             }
             Debug.LogError((object)("Found no receiver for incoming [" + cmdHashHandlerName + "] on " + (object)this.gameObject + ",  the server and client should have the same NetworkBehaviour instances [netId=" + (object)this.netId + "]."));
         }
         else
         {
             NetworkBehaviour invokeComponent;
             if (!this.GetInvokeComponent(cmdHash, invokeClass, out invokeComponent))
             {
                 string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
                 if (!LogFilter.logWarn)
                 {
                     return;
                 }
                 Debug.LogWarning((object)("SyncEvent [" + cmdHashHandlerName + "] handler not found [netId=" + (object)this.netId + "]"));
             }
             else
             {
                 invokeFunction(invokeComponent, reader);
                 NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, (short)7, NetworkBehaviour.GetCmdHashEventName(cmdHash), 1);
             }
         }
     }
 }
Beispiel #3
0
 internal void HandleSyncEvent(int cmdHash, NetworkReader reader)
 {
     if (base.gameObject == null)
     {
         string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
         if (LogFilter.logWarn)
         {
             Debug.LogWarning(string.Concat(new object[] { "SyncEvent [", cmdHashHandlerName, "] received for deleted object [netId=", this.netId, "]" }));
         }
     }
     else
     {
         NetworkBehaviour.CmdDelegate delegate2;
         System.Type type;
         if (!NetworkBehaviour.GetInvokerForHashSyncEvent(cmdHash, out type, out delegate2))
         {
             string str2 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
             if (LogFilter.logError)
             {
                 Debug.LogError(string.Concat(new object[] { "Found no receiver for incoming [", str2, "] on ", base.gameObject, ",  the server and client should have the same NetworkBehaviour instances [netId=", this.netId, "]." }));
             }
         }
         else
         {
             NetworkBehaviour behaviour;
             if (!this.GetInvokeComponent(cmdHash, type, out behaviour))
             {
                 string str3 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash);
                 if (LogFilter.logWarn)
                 {
                     Debug.LogWarning(string.Concat(new object[] { "SyncEvent [", str3, "] handler not found [netId=", this.netId, "]" }));
                 }
             }
             else
             {
                 delegate2(behaviour, reader);
                 NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, 7, NetworkBehaviour.GetCmdHashEventName(cmdHash), 1);
             }
         }
     }
 }
Beispiel #4
0
 internal void HandleSyncEvent(int cmdHash, NetworkReader reader)
 {
     if (base.gameObject == null)
     {
         if (LogFilter.logWarn)
         {
             Debug.LogWarning(string.Concat(new object[] { "SyncEvent [", NetworkBehaviour.GetCmdHashHandlerName(cmdHash), "] received for deleted object ", this.netId }));
         }
     }
     else
     {
         for (int i = 0; i < this.m_NetworkBehaviours.Length; i++)
         {
             NetworkBehaviour behaviour = this.m_NetworkBehaviours[i];
             if (behaviour.InvokeSyncEvent(cmdHash, reader))
             {
                 NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, 7, NetworkBehaviour.GetCmdHashEventName(cmdHash), 1);
                 break;
             }
         }
     }
 }