]> git.lizzy.rs Git - dragonblocks3d.git/blob - src/dragonblocks/mesh_gen_thread.cpp
Create COPYING
[dragonblocks3d.git] / src / dragonblocks / mesh_gen_thread.cpp
1 #include "mesh_gen_thread.hpp"
2
3 using namespace std;
4 using namespace dragonblocks;
5
6 void MeshGenThread::MeshGenerator::updateMesh()
7 {
8 }
9
10 void MeshGenThread::addTask(MeshGenThread::MeshGenerator *gen)
11 {
12         queued_jobs[gen] = true;
13 }
14
15 void MeshGenThread::step()
16 {
17         if (! runJob()) {
18                 generateJobList();
19         }
20 }
21
22 void MeshGenThread::generateJobList()
23 {
24         for (auto it = queued_jobs.begin(); it != queued_jobs.end(); it++) {
25                 active_jobs.push_back(it->first);
26         }
27         queued_jobs.clear();
28 }
29
30
31 bool MeshGenThread::runJob()
32 {
33         int s = active_jobs.size();
34         if (s == 0)
35                 return false;
36         MeshGenThread::MeshGenerator *gen = active_jobs[s - 1];
37         active_jobs.pop_back();
38         if (gen) {
39                 gen->updateMesh();
40         }
41         return true;
42 }
43