protected void LateUpdate() { int currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); // avoiding Environment.TickCount, which could be negative on long-running platforms if (PhotonNetwork.IsMessageQueueRunning && currentMsSinceStart > this.nextSendTickCountOnSerialize) { PhotonNetwork.RunViewUpdate(); this.nextSendTickCountOnSerialize = currentMsSinceStart + this.UpdateIntervalOnSerialize - SerializeRateFrameCorrection; this.nextSendTickCount = 0; // immediately send when synchronization code was running } currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); if (SendAsap || currentMsSinceStart > this.nextSendTickCount) { SendAsap = false; bool doSend = true; int sendCounter = 0; while (PhotonNetwork.IsMessageQueueRunning && doSend && sendCounter < MaxDatagrams) { // Send all outgoing commands Profiler.BeginSample("SendOutgoingCommands"); doSend = PhotonNetwork.NetworkingClient.LoadBalancingPeer.SendOutgoingCommands(); sendCounter++; Profiler.EndSample(); } this.nextSendTickCount = currentMsSinceStart + this.UpdateInterval; } }
protected void LateUpdate() { int currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); // avoiding Environment.TickCount, which could be negative on long-running platforms if (PhotonNetwork.IsMessageQueueRunning && currentMsSinceStart > this.nextSendTickCountOnSerialize) { PhotonNetwork.RunViewUpdate(); this.nextSendTickCountOnSerialize = currentMsSinceStart + this.UpdateIntervalOnSerialize; this.nextSendTickCount = 0; // immediately send when synchronization code was running } currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); if (currentMsSinceStart > this.nextSendTickCount) { bool doSend = true; while (PhotonNetwork.IsMessageQueueRunning && doSend) { // Send all outgoing commands UnityEngine.Profiling.Profiler.BeginSample("SendOutgoingCommands"); doSend = PhotonNetwork.NetworkingClient.LoadBalancingPeer.SendOutgoingCommands(); UnityEngine.Profiling.Profiler.EndSample(); } this.nextSendTickCount = currentMsSinceStart + this.UpdateInterval; } }
/// <summary>Called in intervals by UnityEngine, after running the normal game code and physics.</summary> protected void LateUpdate() { #if PUN_DISPATCH_IN_LATEUPDATE this.Dispatch(); #elif PUN_DISPATCH_IN_FIXEDUPDATE // do not dispatch here #else // see MinimalTimeScaleToDispatchInFixedUpdate and FixedUpdate for explanation: if (Time.timeScale <= PhotonNetwork.MinimalTimeScaleToDispatchInFixedUpdate) { this.Dispatch(); } #endif int currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); // avoiding Environment.TickCount, which could be negative on long-running platforms if (PhotonNetwork.IsMessageQueueRunning && currentMsSinceStart > this.nextSendTickCountOnSerialize) { PhotonNetwork.RunViewUpdate(); this.nextSendTickCountOnSerialize = currentMsSinceStart + this.UpdateIntervalOnSerialize - SerializeRateFrameCorrection; this.nextSendTickCount = 0; // immediately send when synchronization code was running } currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); if (SendAsap || currentMsSinceStart > this.nextSendTickCount) { SendAsap = false; bool doSend = true; int sendCounter = 0; while (PhotonNetwork.IsMessageQueueRunning && doSend && sendCounter < MaxDatagrams) { // Send all outgoing commands Profiler.BeginSample("SendOutgoingCommands"); doSend = PhotonNetwork.NetworkingClient.LoadBalancingPeer.SendOutgoingCommands(); sendCounter++; Profiler.EndSample(); } this.nextSendTickCount = currentMsSinceStart + this.UpdateInterval; } }