Exemplo n.º 1
0
    void InitNewPlayerRPC(byte[] zippedMetaBytes, byte[] zippedVoosBytes)
    {
        Util.Log($"InitNewPlayerRPC, {zippedMetaBytes.Length / 1024} KB zippedMetaBytes, {zippedVoosBytes.Length / 1024} KB zippedVoosBytes");
        byte[] unzippedMetaBytes     = Util.UnGZip(zippedMetaBytes);
        string payloadJson           = Encoding.UTF8.GetString(unzippedMetaBytes, 0, unzippedMetaBytes.Length);
        NewPlayerInitPayload payload = JsonUtility.FromJson <NewPlayerInitPayload>(payloadJson);

        if (payload.version != NewPlayerInitPayload.CurrentVersion)
        {
            OnFatalError($"The game you're trying to join seems to be running an incompatible version of the game.\nQuit the game and make sure Steam has no pending updates.");
            return;
        }

        byte[] unzippedVoosBytes = Util.UnGZip(zippedVoosBytes);
        var    voosReader        = new UNET.NetworkReader(unzippedVoosBytes);

        behaviorSystem.LoadDatabaseForNetworkInit(payload.behaviorDatabase);
        voosEngine.DeserializePlayerInitV2(voosReader);
        sojoSystem.LoadDatabase(payload.sojoDatabase);
        stage.Load(payload.stage);

        receivedPlayerInitPayload = true;

        lastReceivedTerrainMeta = payload.terrainMeta;
    }