public static void LoadFromJsonData(VoxelWorld world, VoxelJsonData data, bool clearTemp = true) { if (clearTemp) { ClearTemp(); } Dictionary <int, string> palette = new Dictionary <int, string>(); for (int i = 0; i < data.palette.Length; i++) { palette.Add(data.palette[i].index, data.palette[i].id); } for (int i = 0; i < data.chunks.Length; i++) { int3 chunkPosition = new int3(data.chunks[i].position.x, data.chunks[i].position.y, data.chunks[i].position.z); NativeList <int2> blocks = new NativeList <int2>(Allocator.Temp); for (int j = 0; j < data.chunks[i].blocks.Length; j++) { blocks.Add(new int2(data.chunks[i].blocks[j].x, data.chunks[i].blocks[j].y)); } using (BinaryWriter w = new BinaryWriter(File.Open(SaveFile(chunkPosition, true), FileMode.OpenOrCreate))) { WriteChunkInfo(w, chunkPosition, palette, blocks); } } world.RefreshWorld(); }
public static VoxelJsonData GetJsonData(VoxelWorld world, bool ignoreEmptyChunks = false) { VoxelJsonData data = new VoxelJsonData(BlockProvider.GetBlockPalette()); List <Chunk> chunks = LoadAllChunks(world, ignoreEmptyChunks); VoxelJsonChunkData[] chunkData = new VoxelJsonChunkData[chunks.Count]; for (int i = 0; i < chunks.Count; i++) { chunkData[i] = new VoxelJsonChunkData(chunks[i]); } data.chunks = chunkData; for (int i = 0; i < chunks.Count; i++) { chunks[i].Dispose(true); } return(data); }
public static string ToJson(VoxelJsonData data, bool prettyPrint = false) { string json = JsonUtility.ToJson(data, prettyPrint); return(json); }
//public static void SaveAllJson(VoxelWorld world, string saveLocation = null) //{ // VoxelJsonData data = GetJsonData(world); // string json = JsonUtility.ToJson(data, false); // Debug.Log(json); //} public static string ToJson(VoxelWorld world, bool ignoreEmptyChunks = false, bool prettyPrint = false) { VoxelJsonData data = GetJsonData(world, ignoreEmptyChunks); return(ToJson(data, prettyPrint)); }