//public bool FromGenData(ChunkGenData data, Action<Chunk> callback) //{ // if(Busy) { return false; } //} #endregion private void _forge(IntVector3 chunkPos, Action <Chunk> callback) { Busy = true; OnChunksDone = callback; if (vGenConfig.IsSerializedDataValid) { SerializedChunk.ReadAsync(chunkPos, (SerializedChunk serChunk) => { if (serChunk != null) { Chunk result = Chunk.FromSerializedChunk(serChunk, CreateMapDisplay(chunkPos)); chunksDone(result); return; } Debug.Log("got back null from read"); computeChunk(chunkPos); }); } else { Debug.Log("ser data invalid"); computeChunk(chunkPos); } }
//Async version private void _UnPack(IntVector3 chunkPos, Action <Chunk> callback) { Busy = true; OnChunksDone = callback; if (vGenConfig.IsSerializedDataValid) { Debug.Log("will read chunk: " + chunkPos); SerializedChunk.ReadAsync(chunkPos, (SerializedChunk serChunk) => { if (serChunk != null) { Debug.Log("serchunk not null"); Chunk result = Chunk.FromSerializedChunk(serChunk, CreateMapDisplay(chunkPos)); chunksDone(result); return; } chunksDone(null); }); } else { Debug.Log("ser data not valid"); chunksDone(null); } }
async Task ProcessSet(NeighborChunkGenData neis, Action <IntVector3> OnWroteChunkData) { //TODO: trade data, etc... for (int i = 0; i < ChunkGenData.LODLevels; ++i) { var cullJob = await CullHidden(neis, i); updateChunkCenterDisplay(cullJob, neis.centerChunkData, i); cullJob.DisposeAll(); } await localLight.CalculateLocalLight(neis); // write center chunk var wroteAtPos = neis.center; // // TODO: write chunk at some other juncture // //var wroteAtPos = await SerializedChunkGenData.WriteAsync(neis.centerChunkData, SerializedChunkGenData.GenDataFullPath(neis.center)); // write center chunk display arrays SerializedChunk.SerializedDisplayBuffers.WriteLODArrays(neis.centerChunkData.displays, neis.center); Chunk.MetaData metaData = new Chunk.MetaData(); metaData.LODBufferLengths = neis.centerChunkData.displays.getLengths(); metaData.HasBeenNeighborProcessed = true; XMLOp.Serialize(metaData, SerializedChunk.GetMetaDataFullPath(neis.center)); OnWroteChunkData(wroteAtPos); }
bool HasBeenNeighborProcessed(IntVector3 chunkPos) { if (File.Exists(SerializedChunk.GetMetaDataFullPath(chunkPos))) { Chunk.MetaData meta = XMLOp.Deserialize <Chunk.MetaData>(SerializedChunk.GetMetaDataFullPath(chunkPos)); return(meta.HasBeenNeighborProcessed); } return(false); }
public static void Write(ChunkGenData chunkGenData) { MetaData metaData = new MetaData { LODBufferLengths = chunkGenData.displays.getLengths(), HasBeenNeighborProcessed = true }; XMLOp.Serialize(metaData, SerializedChunk.GetMetaDataFullPath(chunkGenData.chunkPos)); }
public void Serialize() { if (!metaData.Dirty) { return; } metaData.Dirty = false; var serChunk = new SerializedChunk(ChunkPos, mapDisplay.buffers, new uint[0], metaData); serChunk.Write(); }
public static void WriteSerializedChunk(SerializedChunk serializedChunk, string worldName) { System.IO.Directory.CreateDirectory(defaultPath + worldName); BinaryFormatter binaryFormatter = new BinaryFormatter(); using (FileStream file = File.Create(defaultPath + worldName + "/chunk" + serializedChunk.chunkPositionX + "-" + serializedChunk.chunkPositionY + extension)) { // Debug.Log ("Chunk saved at " + Application.persistentDataPath); binaryFormatter.Serialize(file, serializedChunk); file.Close(); } }
public static Chunk DeserializeChunk(Vector2 chunkPosition, string worldName) { GameObject chunkGameObject = (GameObject)GameObject.Instantiate(Resources.Load("Prefabs/Chunk"), chunkPosition * PlayerPrefs.GetInt("chunk_size"), Quaternion.identity); Chunk chunk = chunkGameObject.GetComponent <Chunk>(); string path = defaultPath + worldName + "/chunk" + chunkPosition.x + "-" + chunkPosition.y + extension; if (File.Exists(path)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); using (FileStream file = File.Open(path, FileMode.Open)) { SerializedChunk serializedChunk = (SerializedChunk)binaryFormatter.Deserialize(file); file.Close(); serializedChunk.WriteToChunk(chunk); } } return(chunk); }
static void SerDesDisplayBuffers() { SerializedChunk.TestSerDisplayBuffers(); }
public static bool SavedChunkExists(IntVector3 chunkPos) { return(File.Exists(SerializedChunk.GetMetaDataFullPath(chunkPos))); }
public static Chunk FromSerializedChunk(SerializedChunk serChunk, MapDisplay display) { return(serChunk.ToChunk(display)); }
public static void SerializeChunk(Chunk chunk, string worldName) { SerializedChunk serializedChunk = new SerializedChunk(chunk); WriteSerializedChunk(serializedChunk, worldName); }
static string FilePath(IntVector3 origin) { return(string.Format("{0}.{1}", SerializedChunk.GetFileFullPath(origin), "GenAreaMD")); }
public static string GenDataFullPath(IntVector3 pos) { return(string.Format("{0}.CGD", SerializedChunk.GetFileFullPath(pos))); }