// 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); } } } }
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); } } } }
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; } } } }