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(); }
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(); }