public WaterChunksMerger(string fileFilter, int fileX = -1, int fileZ = -1)
 {
     _fileLog     = fileFilter + "[" + fileX + "," + fileZ + "]";
     _waterReader = new VFDataReader(VFVoxelTerrain.MapDataPath_Zip + "/water", OnChunkDataLoad, false);
     _terraReader = new VFDataReader(VFVoxelTerrain.MapDataPath_Zip + "/map", OnChunkDataLoad, false);
     River2Voxel.ReadRiverChunksList(ref _riverChunkFileList, fileFilter, fileX, fileZ);
     _chunkPosList = _riverChunkFileList.Keys.Cast <IntVector4>().ToList();
 }
        byte[] MergeWaterData(IntVector4 chunkPos, byte[] baseChunkData)
        {
            List <string> files = _riverChunkFileList[chunkPos];
            int           n     = files.Count;

            if (n > 0)
            {
                byte[] chunkData = baseChunkData;
                for (int i = 0; i < n; i++)
                {
                    chunkData = VFDataReader.MergeChunkData(chunkData, File.ReadAllBytes(files[i]), chunkPos.w);
                }

                if (chunkPos.w == 0)                // || chunkData.Length > VFVoxel.c_VTSize){  //let waterchunk_lod(not full/empty) do minus
                {
                    VFVoxelChunkData tChunk = _terraReader.ReadChunkImm(chunkPos);
                    chunkData = VFDataReader.MinusChunkData(chunkData, tChunk.DataVT, 0);
                }
                return(chunkData);
            }
            return(baseChunkData);
        }
예제 #3
0
 public River2Voxel()
 {
     terraReader = new VFDataReader(VFVoxelTerrain.MapDataPath_Zip + "/map", OnChunkDataLoad);
     waterReader = new VFDataReader(VFVoxelTerrain.MapDataPath_Zip + "/water", OnChunkDataLoad);
 }