public static void AddReadRequest(VFVoxelChunkData chunkData)
    {
        IntVector4 chunkPos = chunkData.ChunkPosLod;

        // Req to chunks out of range will return, these chunks will be null and can not be write according to WriteVoxelAtIdx's code
        if (chunkPos.x < 0 || chunkPos.x >= VoxelTerrainConstants._worldMaxCX)
        {
            return;
        }
        if (chunkPos.y < 0 || chunkPos.y >= VoxelTerrainConstants.WorldMaxCY(chunkPos.w))
        {
            return;
        }
        if (chunkPos.z < 0 || chunkPos.z >= VoxelTerrainConstants._worldMaxCZ)
        {
            return;
        }

        // no caching
        IntVector4 piecePos;

        VFFileDataClone.WorldChunkPosToPiecePos(chunkPos, out piecePos);

        IntVector4 fileIndex;

        VFFileDataClone.PiecePos2FileIndex(piecePos, out fileIndex);

        VFPieceDataClone pieceData = GetPieceDataSub(piecePos, GetFileSetSub(fileIndex));

        pieceData.Decompress();
        pieceData.SetChunkData(chunkData);
        pieceData._data = null;
        pieceData       = null;
    }
Esempio n. 2
0
    void decompressData(VFVoxelChunkData chunkData)
    {
        int lod = chunkData.LOD;
        int px, py, pz;

        VFFileUtil.WorldChunkPosToPiecePos(chunkData.ChunkPosLod, out px, out py, out pz);

        int fx, fz;

        VFFileUtil.PiecePos2FilePos(px, py, pz, lod, out fx, out fz);

        VFPieceDataClone pieceData = VFDataReaderClone.GetPieceDataSub(new IntVector4(px, py, pz, lod), VFDataReaderClone.GetFileSetSub(new IntVector4(fx, 0, fz, lod)));

        pieceData.Decompress();
        pieceData.SetChunkData(chunkData);
        pieceData._data = null;
        pieceData       = null;
    }