コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public static string ToJson(VoxelJsonData data, bool prettyPrint = false)
        {
            string json = JsonUtility.ToJson(data, prettyPrint);

            return(json);
        }
コード例 #4
0
        //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));
        }