public void MeshDataThread(object threadTask) { ThreadMeshObject threadTaskInfo = (ThreadMeshObject)threadTask; try { ChunkMeshData[] chunkMeshData = World.meshGen.GenerateChunkMeshData(threadTaskInfo.chunkCol, threadTaskInfo.yIndex); ThreadMeshInfo threadInfo = new ThreadMeshInfo(threadTaskInfo.callback, chunkMeshData); lock (threadMeshQueue) { threadMeshQueue.Enqueue(threadInfo); } } catch { Debug.Log("Chunk Mesh Error Occured!"); } }
void Update() { if (threadMeshQueue.Count > 0) { for (int i = 0; i < threadMeshQueue.Count; i++) { ThreadMeshInfo threadInfo = threadMeshQueue.Dequeue(); threadInfo.callback(threadInfo.chunkData); amountOfWorkerThreads--; } } if (threadMapQueue.Count > 0) { for (int i = 0; i < threadMapQueue.Count; i++) { ThreadMapInfo threadInfo = threadMapQueue.Dequeue(); threadInfo.callback(threadInfo.chunkMapData); amountOfWorkerThreads--; } } }