예제 #1
0
 public void Import(Pathea.PeRecordReader r)
 {
     if (Pathea.PeGameMgr.IsMulti)
     {
         return;
     }
     SaveLoad = new VFVoxelSave(ArchiveKey);
     SaveLoad.Import(r);
     InitSkEntity();
 }
예제 #2
0
        public byte[] GetData(string key)
        {
            PeRecordReader r = GetReader(key);

            if (null == r)
            {
                return(null);
            }

            return(r.ReadBytesDirect());
        }
예제 #3
0
        public void Restore()
        {
            PeRecordReader r = ArchiveMgr.Instance.GetReader(VFVoxelTerrain.ArchiveKey);

            VFVoxelTerrain.self.Import(r);

            r = ArchiveMgr.Instance.GetReader(VFVoxelWater.ArchiveKey);
            VFVoxelWater.self.Import(r);

            r = ArchiveMgr.Instance.GetReader(Bloc45kArchiveKey);
            Block45Man.self.Import(r);
        }
예제 #4
0
    public void Import(Pathea.PeRecordReader r)
    {
        ApplyQuality(SystemSettingData.Instance.WaterRefraction, SystemSettingData.Instance.WaterDepth);

        SaveLoad = new VFVoxelSave(ArchiveKey, AddtionalReader, AddtionalWriter);
        SaveLoad.Import(r);
        if (s_surfaceChunkData == null)
        {
            InitSufaceChunkData();
        }

#if RIVER_DATA_FILE_TST
        // Load river chunk pos
        River2Voxel.ReadRiverChunksList(ref _riverChunkFileList);
#endif
    }
예제 #5
0
    void DelayedLoad()
    {
        if (null == _record)
        {
            return;
        }

        if (!_record.Open())
        {
            return;
        }

        BinaryReader br = _record.binaryReader;

        _dataSource.Import(br);
        _record.Close();
        _record = null;
    }
예제 #6
0
    public void Import(Pathea.PeRecordReader r)
    {
        if (null == r)
        {
            return;
        }
        if (_tmpVoxelFileStream == null)
        {
            return;
        }

        if (!r.Open())
        {
            return;
        }

        BinaryReader br = r.binaryReader;

        // Version check
        int ver = br.ReadInt32();

        if (ver != s_ver)
        {
            Debug.LogError("[VoxelSave]:Error version:" + ver + "|" + s_ver);
            r.Close();
            return;
        }

        int cnt = br.ReadInt32();

        byte[]       buff  = VFVoxelChunkData.s_ChunkDataPool.Get();
        BinaryWriter tmpbw = new BinaryWriter(_tmpVoxelFileStream);

        _tmpVoxelFileStream.Seek(0, SeekOrigin.Begin);
        tmpbw.Write(ver);
        tmpbw.Write(cnt);
        for (int i = 0; i < cnt; i++)
        {
            br.Read(buff, 0, VoxelTerrainConstants.VOXEL_ARRAY_LENGTH_VT);
            _tmpVoxelFileStream.Write(buff, 0, VoxelTerrainConstants.VOXEL_ARRAY_LENGTH_VT);
        }
        VFVoxelChunkData.s_ChunkDataPool.Free(buff);

        _modifiedChunksInfo.Clear();
        //long chnkDataPos = br.BaseStream.Position;
        //long infoDataPos = chnkDataPos + cnt*VoxelTerrainConstants.VOXEL_ARRAY_LENGTH_VT;
        //br.BaseStream.Seek(infoDataPos);
        for (int i = 0; i < cnt; i++)
        {
            int  x   = br.ReadInt32();
            int  y   = br.ReadInt32();
            int  z   = br.ReadInt32();
            int  w   = br.ReadInt32();
            long pos = br.ReadInt64();
            _modifiedChunksInfo.Add(new IntVector4(x, y, z, w), pos);
        }

        if (_addtionalReader != null)
        {
            _addtionalReader(br);
        }
        r.Close();
    }
예제 #7
0
 public void Import(Pathea.PeRecordReader r)
 {
     _record = r;
 }