Пример #1
0
    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
        }
    }
Пример #2
0
    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);
        }
    }