Exemplo n.º 1
0
        public static void SaveChunk(Chunk chunk, bool temporary = false)
        {
            Assert.IsTrue(IsInitialized, "You need to initialize first!");

            if (chunk == null)
            {
                return;
            }

            NativeList <int2> blocks = chunk.CompressBlocks();

            Dictionary <int, string> palette = BlockProvider.GetBlockPalette();

            string path = SaveFile(chunk.position, temporary);

writing:
            try
            {
                using (BinaryWriter w = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate)))
                {
                    WriteChunkInfo(w, chunk.position, palette, blocks);
                }
            }
            catch (DirectoryNotFoundException)
            {
                Directory.CreateDirectory(Path.GetDirectoryName(path));
                goto writing;
            }

            blocks.Dispose();
        }
Exemplo n.º 2
0
        public VoxelJsonChunkData(Chunk chunk)
        {
            position = new Vector3Int(chunk.position.x, chunk.position.y, chunk.position.z);
            NativeList <int2> compressedBlocks = chunk.CompressBlocks();

            blocks = new Vector2Int[compressedBlocks.Length];
            for (int i = 0; i < blocks.Length; i++)
            {
                blocks[i] = new Vector2Int(compressedBlocks[i].x, compressedBlocks[i].y);
            }

            compressedBlocks.Dispose();
        }