public void SaveChunk(WixelChunk chunk) { WixelChunkSaveBuffer save = new WixelChunkSaveBuffer(chunk); if (save.Blocks.Count == 0) { return; } string saveFile = SaveLocation(chunk.World.WorldName); saveFile += FileName(chunk.WorldPosition); IFormatter formatter = new BinaryFormatter(); using (Stream stream = new FileStream(saveFile, FileMode.Create, FileAccess.Write, FileShare.None)) { formatter.Serialize(stream, chunk.Blocks); stream.Close(); } }
public bool LoadChunk(WixelChunk chunk) { string saveFile = SaveLocation(chunk.World.WorldName); saveFile += FileName(chunk.WorldPosition); if (!File.Exists(saveFile)) { return(false); } IFormatter formatter = new BinaryFormatter(); using (FileStream stream = new FileStream(saveFile, FileMode.Open)) { try { WixelChunkSaveBuffer save = (WixelChunkSaveBuffer)formatter.Deserialize(stream); foreach (var block in save.Blocks) { chunk.Blocks[block.Key.x, block.Key.y, block.Key.z] = block.Value; } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { stream.Close(); } } return(true); }