public void Write() { //Write dbuffer SerializedDisplayBuffers.WriteBuffer(DBuffers, GetDBufferFullPath(ChunkPos)); //Write meta data XMLOp.Serialize(metaData, GetMetaDataFullPath(ChunkPos)); //Write chunk WriteUintsToFile(Voxels, FileFullPath); }
public static SerializedChunk Read(IntVector3 chunkPos) { if (!File.Exists(GetFileFullPath(chunkPos))) { return(null); } try { MapDisplay.LODBuffers dbuffers = null; Chunk.MetaData metaData = new Chunk.MetaData() { Dirty = true }; metaData = XMLOp.Deserialize <Chunk.MetaData>(GetMetaDataFullPath(chunkPos)); try { dbuffers = SerializedDisplayBuffers.ReadBufferAt(GetDBufferFullPath(chunkPos)); // SerializedDisplayBuffers.Deserialize(GetDBufferFullPath(chunkPos)).ToDisplayBuffers(); } catch (Exception e) { Debug.LogWarning("Excptn while reading dbuffers " + e.ToString()); return(null); } FileStream chunkFile = File.Open(GetFileFullPath(chunkPos), FileMode.Open); using (BinaryReader br = new BinaryReader(chunkFile)) { int pos = 0; int length = (int)br.BaseStream.Length; uint[] voxels = new uint[length / VoxelStorageSize]; while (pos * VoxelStorageSize < length) { voxels[pos++] = br.ReadUInt32(); } return(new SerializedChunk(chunkPos, dbuffers, voxels, metaData)); } } catch (Exception e) { Debug.LogWarning("Excptn while reading: " + e.ToString()); return(null); } }