// happens on server internal void HandleCommand(int cmdHash, NetworkReader reader) { // this doesn't use NetworkBehaviour.InvokeCommand 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("Command [" + errorCmdName + "] received for deleted object [netId=" + netId + "]"); } return; } // find the matching Command function and networkBehaviour class NetworkBehaviour.CmdDelegate invokeFunction; Type invokeClass; bool invokeFound = NetworkBehaviour.GetInvokerForHashCommand(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("Command [" + errorCmdName + "] handler not found [netId=" + netId + "]"); } return; } invokeFunction(invokeComponent, reader); #if UNITY_EDITOR UnityEditor.NetworkDetailStats.IncrementStat( UnityEditor.NetworkDetailStats.NetworkDirection.Incoming, (short)MsgType.Command, NetworkBehaviour.GetCmdHashCmdName(cmdHash), 1); #endif }
internal void HandleCommand(int cmdHash, NetworkReader reader) { if ((UnityEngine.Object) this.gameObject == (UnityEngine.Object)null) { string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash); if (!LogFilter.logWarn) { return; } Debug.LogWarning((object)("Command [" + cmdHashHandlerName + "] received for deleted object [netId=" + (object)this.netId + "]")); } else { System.Type invokeClass; NetworkBehaviour.CmdDelegate invokeFunction; if (!NetworkBehaviour.GetInvokerForHashCommand(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)("Command [" + cmdHashHandlerName + "] handler not found [netId=" + (object)this.netId + "]")); } else { invokeFunction(invokeComponent, reader); NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, (short)5, NetworkBehaviour.GetCmdHashCmdName(cmdHash), 1); } } } }
internal void HandleCommand(int cmdHash, NetworkReader reader) { if (base.gameObject == null) { string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash); if (LogFilter.logWarn) { Debug.LogWarning(string.Concat(new object[] { "Command [", cmdHashHandlerName, "] received for deleted object [netId=", this.netId, "]" })); } } else { NetworkBehaviour.CmdDelegate delegate2; System.Type type; if (!NetworkBehaviour.GetInvokerForHashCommand(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[] { "Command [", str3, "] handler not found [netId=", this.netId, "]" })); } } else { delegate2(behaviour, reader); NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, 5, NetworkBehaviour.GetCmdHashCmdName(cmdHash), 1); } } } }
internal void HandleCommand(int cmdHash, NetworkReader reader) { if (base.gameObject == null) { string cmdHashHandlerName = NetworkBehaviour.GetCmdHashHandlerName(cmdHash); if (LogFilter.logWarn) { Debug.LogWarning(string.Concat(new object[] { "Command [", cmdHashHandlerName, "] received for deleted object [netId=", this.netId, "]" })); } } else { bool flag = false; for (int i = 0; i < this.m_NetworkBehaviours.Length; i++) { NetworkBehaviour behaviour = this.m_NetworkBehaviours[i]; if (behaviour.InvokeCommand(cmdHash, reader)) { flag = true; break; } } if (!flag) { string str2 = NetworkBehaviour.GetCmdHashHandlerName(cmdHash); if (LogFilter.logError) { Debug.LogError(string.Concat(new object[] { "Found no receiver for incoming command [", str2, "] on ", base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", this.netId, "]." })); } } NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, 5, NetworkBehaviour.GetCmdHashCmdName(cmdHash), 1); } }