public void Update() { if (!_serverAuthorative) { if (_simulationTimer.CurrentTime == 0) { _simulationTimer.CurrentTime = _simulationTimer.StepTime; } return; } if (_firstSend) { _simulationTimer.SyncInfo.SetFirstSendTime(DateTime.Now); _firstSend = false; } var msg = new SimulationTimeMessage() { ClientSimulationTime = _simulationTimer.CurrentTime, ServerSimulationTime = 0 }; _sendMethod.Invoke(msg); _simulationTimer.Sync(); }
public void OnSimulationTimeMessage(SimulationTimeMessage messageBody) { var syncInfo = _simulationTimer.SyncInfo; if (_firstRecv) { syncInfo.SetFirstRecvTime(DateTime.Now); syncInfo.FirstRecvServerTime = messageBody.ServerSimulationTime; _firstRecv = false; } else if (messageBody.ClientSimulationTime <= 0) { return; } var delta = messageBody.ClientSimulationTime - messageBody.ServerSimulationTime; syncInfo.LastSyncTimeDelta = delta; syncInfo.IsWaitingSync = true; if (delta < 0) { _logger.DebugFormat("ClientSync The Server Outpace Client delta {0}", delta); } }
public void OnSimulationTimeMessage(INetworkChannel channel, SimulationTimeMessage msg) { msg.ServerSimulationTime = _simulationTimer.CurrentTime; _sendMethod.Invoke(channel, msg); }