Example #1
0
    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!");
        }
    }
Example #2
0
    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--;
            }
        }
    }