/// <summary> /// Continuously check if we have chunks to generate. /// </summary> private void generateLoop() { bool sleep = true; while (QuixelEngine.isActive()) { sleep = false; MeshFactory.MeshRequest req = MeshFactory.getNextRequest(); if (req == null) { sleep = true; } else { if (req.densities == null) { if (!req.hasDensities) { req.densities = DensityPool.getDensityData(); } else { req.densities = req.node.densityData; } } MeshFactory.GenerateMeshData(req); lock (finishedQueue) finishedQueue.Enqueue(req); } if (sleep) { Thread.Sleep(30); } else { Thread.Sleep(4); } } }
/// <summary> /// Queue a mesh for generation. /// </summary> /// <param name="req"></param> public void queueGenerateMesh(MeshFactory.MeshRequest req) { lock (genQueue) genQueue.Enqueue(req); }