private static void OnClientSyncTime(ClientSyncTimeEvent e) { if (e.isDistortionSyncEvent) { // Set ping double calculatedPingTime = Math.Max((clientTimeNoDistortion - e.clientSendTime) / 2.0, 0.0); singleton._serverPingTime = (calculatedPingTime + singleton._serverPingTime * 3.0) / 4.0; double calculatedServerWatchDialation = Math.Min(Math.Max(-_serverWatchDialationLimits, (clientTimeNoDistortion) - e.serverLifeTime), _serverWatchDialationLimits); FFSystem.ResetClientWatch(); singleton._serverLifeTime = e.serverLifeTime + singleton._serverPingTime; // _serverWatchDialation average singleton._serverWatchDialation = (calculatedServerWatchDialation + singleton._serverWatchDialation) / 2.0; //_serverWatchDialation = calculatedServerWatchDialation; // debug (non-averaged) Debug.Log("ClientSyncTimeEvent (Dialation Event)" + "\nCalculated Dialation: " + calculatedServerWatchDialation + "\nCalculated Ping: " + calculatedPingTime); // debug } else { // Set ping double calculatedPingTime = Math.Max(clientTimeNoDistortion - e.clientSendTime, 0.0); singleton._serverPingTime = (calculatedPingTime + singleton._serverPingTime * 4.0) / 5.0; //_serverPingTime = calculatedPingTime; /*Debug.Log("ClientSyncTimeEvent" + * "\nCalculated Ping: " + calculatedPingTime); *///debug } }
private static void OnClientConnected(ClientConnectedEvent e) { if (e.clientGuid == singleton._clientData.clientGuid) { double localwatchtime = FFSystem.clientWatchTime; FFSystem.ResetClientWatch(); // Set ping ( 0 < ping < 1.0 ) double calculatedPingTime = Math.Min(Math.Max((localwatchtime - e.clientSendTime) / 2.0, 0.0), 1.0); singleton._serverPingTime = (calculatedPingTime + singleton._serverPingTime * 4.0) / 5.0; singleton._clientId = e.clientId; singleton._serverLifeTime = e.serverTime + singleton._serverPingTime; singleton._serverStartDateTime = e.serverStartTime; singleton._serverName = e.serverName; Debug.Log("Retrieved id: " + singleton._clientId + " from Server with start time of: " + e.serverStartTime + ", and a server life time of: " + e.serverTime); singleton._ready = true; ClientConnectionReadyEvent CCRE; CCRE.clientId = singleton._clientId; CCRE.clientTime = clientTime; FFMessage <ClientConnectionReadyEvent> .SendToLocal(CCRE); FFLocalEvents.TimeChangeEvent TCE; TCE.newCurrentTime = FFSystem.time; FFMessage <FFLocalEvents.TimeChangeEvent> .SendToLocal(TCE); } }