Exemple #1
0
    // Writes Chunk c's state metadata into given buffer
    // and returns the amount of bytes written
    public static int CompressMetadataState(Chunk c, byte[] buffer, int targetPos = 0)
    {
        List <ushort> palleteList = Compression.GetPallete(Pallete.METADATA);
        int           bytes;

        NativeArray <int> writtenBytes = new NativeArray <int>(new int[1] {
            0
        }, Allocator.TempJob);
        NativeArray <ushort> chunkData    = NativeTools.CopyToNative(c.metadata.GetStateData());
        NativeArray <byte>   buff         = NativeTools.CopyToNative(buffer);
        NativeArray <ushort> palleteArray = NativeTools.CopyToNative(palleteList.ToArray());

        CompressionJob cmdJob = new CompressionJob {
            chunkData    = chunkData,
            buffer       = buff,
            palleteArray = palleteArray,
            writtenBytes = writtenBytes
        };

        JobHandle handle = cmdJob.Schedule();

        handle.Complete();

        NativeArray <byte> .Copy(buff, 0, buffer, targetPos, writtenBytes[0]);

        bytes = writtenBytes[0];

        chunkData.Dispose();
        palleteArray.Dispose();
        buff.Dispose();
        writtenBytes.Dispose();

        return(bytes);
    }
Exemple #2
0
    // Builds Chunk's State Metadata using Decompression algorithm
    public static void DecompressMetadataStateClient(Chunk c, byte[] buffer, int initialPos)
    {
        // Preparation Variables
        List <ushort> palleteList = Compression.GetPallete(Pallete.METADATA);

        NativeArray <ushort> data     = new NativeArray <ushort>(Chunk.chunkWidth * Chunk.chunkWidth * Chunk.chunkDepth, Allocator.TempJob);
        NativeArray <byte>   readData = NativeTools.CopyToNative(buffer);
        NativeArray <ushort> pallete  = NativeTools.CopyToNative(palleteList.ToArray());

        DecompressJob dbJob = new DecompressJob {
            data       = data,
            readData   = readData,
            pallete    = pallete,
            initialPos = initialPos
        };
        JobHandle job = dbJob.Schedule();

        job.Complete();

        c.metadata.SetStateData(data.ToArray());

        data.Dispose();
        readData.Dispose();
        pallete.Dispose();
    }
Exemple #3
0
    // Builds Chunk's VoxelData using Decompression algorithm
    public static void DecompressBlocks(Chunk c, byte[] buffer)
    {
        // Preparation Variables
        Pallete       p           = Compression.BiomeToPallete(c.biomeName);
        List <ushort> palleteList = Compression.GetPallete(p);

        NativeArray <ushort> data     = new NativeArray <ushort>(Chunk.chunkWidth * Chunk.chunkWidth * Chunk.chunkDepth, Allocator.TempJob);
        NativeArray <byte>   readData = NativeTools.CopyToNative(buffer);
        NativeArray <ushort> pallete  = NativeTools.CopyToNative(palleteList.ToArray());

        DecompressJob dbJob = new DecompressJob {
            data       = data,
            readData   = readData,
            pallete    = pallete,
            initialPos = 0
        };
        JobHandle job = dbJob.Schedule();

        job.Complete();

        c.data.SetData(data.ToArray());


        data.Dispose();
        readData.Dispose();
        pallete.Dispose();
    }
Exemple #4
0
    // Writes Chunk c's data using a Pallete's compression into given buffer
    // and returns the amount of bytes written
    public static int CompressBlocks(Chunk c, byte[] buffer, int targetPos = 0)
    {
        int           bytes;
        Pallete       p           = Compression.BiomeToPallete(c.biomeName);
        List <ushort> palleteList = Compression.GetPallete(p);


        NativeArray <int> writtenBytes = new NativeArray <int>(new int[1] {
            0
        }, Allocator.TempJob);
        NativeArray <ushort> chunkData    = NativeTools.CopyToNative(c.data.GetData());
        NativeArray <byte>   buff         = NativeTools.CopyToNative(buffer);
        NativeArray <ushort> palleteArray = NativeTools.CopyToNative(palleteList.ToArray());

        CompressionJob cbJob = new CompressionJob {
            chunkData    = chunkData,
            buffer       = buff,
            palleteArray = palleteArray,
            writtenBytes = writtenBytes
        };

        JobHandle handle = cbJob.Schedule();

        handle.Complete();

        NativeArray <byte> .Copy(buff, 0, buffer, targetPos, writtenBytes[0]);

        bytes = writtenBytes[0];

        chunkData.Dispose();
        palleteArray.Dispose();
        buff.Dispose();
        writtenBytes.Dispose();

        return(bytes);
    }