public static void SaveChunk(SavedChunk chunk, string worldName, string name) { Directory.CreateDirectory(Application.dataPath + "/Worlds/" + worldName); BinaryFormatter formatter = new BinaryFormatter(); FileStream stream = File.Create(Application.dataPath + "/Worlds/" + worldName + "/" + name + ".chnk"); formatter.Serialize(stream, chunk); stream.Close(); }
/// <summary> /// Converts a Block 2D multi array into a single array and returns as chunk. /// </summary> /// <param name="t"></param> /// <returns></returns> SavedChunk ConvertToSerializableChunk(Block[,] c) { Block[] _chunk = new Block[Global.maxChunkSize * Global.maxChunkSize]; int i = 0; for (int z = 0; z < c.GetLength(1); z++) { for (int x = 0; x < c.GetLength(0); x++, i++) { _chunk[i] = c[x, z]; } } SavedChunk newChunk = new SavedChunk(chunkPosX, chunkPosZ, _chunk); newChunk.blocks = _chunk; return(newChunk); }
public static Chunk LoadChunk(string worldName, string name) { string path = Application.dataPath + "/Worlds/" + worldName + "/" + name + ".chnk"; Chunk _chunk = null; if (File.Exists(path)) { BinaryFormatter formatter = new BinaryFormatter(); FileStream stream = File.Open(path, FileMode.Open); SavedChunk chunk = (SavedChunk)formatter.Deserialize(stream); Block[,] blocks = new Block[Global.maxChunkSize, Global.maxChunkSize]; for (int i = 0; i < chunk.blocks.Length; i++) { blocks[chunk.blocks[i].posX, chunk.blocks[i].posZ] = chunk.blocks[i]; } _chunk = new Chunk(blocks); _chunk.x = chunk.x; _chunk.z = chunk.z; stream.Close(); } return(_chunk); }