public void OnTimeReturn(VNetMessageTimeReturn timeReturn) { double curTime = VNetTimer.Inst.GetSystemTimeNow(); double halfLatency = (curTime - timeReturn.clientTime) / 2; double difference = timeReturn.serverTime - curTime + halfLatency; if (m_timeSyncsRemaining == VNetCommon.NET_TIME_NUM_SYNCS) { m_serverTimeDifference = difference; } // Pool it m_serverLatencies[VNetCommon.NET_TIME_NUM_SYNCS - m_timeSyncsRemaining] = difference; m_timeSyncsRemaining--; if (m_timeSyncsRemaining == 0) { for (int i = 0; i < VNetCommon.NET_TIME_NUM_SYNCS; i++) { if (m_serverLatencies[i] < m_serverTimeDifference) { m_serverTimeDifference = m_serverLatencies[i]; } } } }
public void OnTimeRequest(VNetMessageTimeRequest timeRequest) { VNetMessageTimeReturn nmtr = new VNetMessageTimeReturn(); nmtr.clientTime = timeRequest.currentTime; nmtr.serverTime = VNetSessionTime.Inst.GetServerTimePrecise(); timeRequest._client.SendNetMessage(nmtr, false); }
public override VNetMessage Clone() { VNetMessageTimeReturn clone = (VNetMessageTimeReturn)base.Clone(); clone.clientTime = clientTime; clone.serverTime = serverTime; return(clone); }