public static void SaveChunk(ChunkSaveObject so) { BinaryFormatter formatter = new BinaryFormatter(); string path = GetPathFromChunkCoord(so.chunk); FileStream stream = new FileStream(path, FileMode.Create); formatter.Serialize(stream, so); stream.Close(); }
public static ChunkSaveObject LoadChunk(string path) { if (File.Exists(path)) { BinaryFormatter formatter = new BinaryFormatter(); FileStream stream = new FileStream(path, FileMode.Open); ChunkSaveObject so = formatter.Deserialize(stream) as ChunkSaveObject; stream.Close(); return(so); } else { Debug.Log($"No file found: {path}"); return(null); } }
public VectorVoxel[] LoadDataFromChunkSave(ChunkCoord chunk) { if (ChunkSaveObject.ChunkSaveExist(chunk)) { ChunkSaveObject so = ChunkSaveObject.LoadChunk(ChunkSaveObject.GetPathFromChunkCoord(chunk)); VectorVoxel[] vv = new VectorVoxel[so.vectors.Length / 4]; for (int i = 0; i < vv.Length; i++) { Vector3Int vec = new Vector3Int(so.vectors[i, 0], so.vectors[i, 1], so.vectors[i, 2]); BlockType bloc = (BlockType)so.vectors[i, 3]; vv[i] = new VectorVoxel(vec, bloc); PrepareToSave(vec.x, vec.y, vec.z, chunk, bloc); } return(vv); } return(null); }
void SaveDataToChunkSave() { List <ChunkCoord> toRemove = new List <ChunkCoord>(); foreach (var chunkCoorditem in preparedToSave) { List <VectorVoxel> vvs = new List <VectorVoxel>(); foreach (var item in chunkCoorditem.Value) { VectorVoxel vv = new VectorVoxel(item.Key, item.Value); vvs.Add(vv); } ChunkSaveObject so = new ChunkSaveObject(chunkCoorditem.Key, vvs.ToArray()); ChunkSaveObject.SaveChunk(so); toRemove.Add(chunkCoorditem.Key); } foreach (ChunkCoord item in toRemove) { editedBlock.Remove(item); } preparedToSave.Clear(); }