public TerrainResponseEvent nextResponse() { TerrainResponseEvent c = null; myReturnedChunks.TryDequeue(out c); return(c); }
public override void workerFunction() { while (myShouldQuit == false) { UInt64 id; while (myRequsetedChunks.TryDequeue(out id) == true) { if (checkDatabase(id) == false) { myClient.requestChunk(id); } } //clear out anything that the generator has created TerrainResponseEvent tc = myClient.nextResponse(); while (tc != null) { Chunk chunk = myChunkCache.handleResponse(tc); chunk.world = myWorld; myAvaialbleChunks.Enqueue(chunk); tc = myClient.nextResponse(); } Thread.Sleep(10); } }
public Chunk handleResponse(TerrainResponseEvent tcr) { Chunk chunk = new Chunk(Vector3.Zero); chunk.chunkKey = new ChunkKey(tcr.chunkId); byte[] data = decompressChunk(tcr.data.ToArray()); chunk.deserialize(data); updateChunk(chunk); return(chunk); }