]> git.lizzy.rs Git - dragonblocks3d.git/blob - src/dragonblocks/mesh_gen_mgr.hpp
Multithreading
[dragonblocks3d.git] / src / dragonblocks / mesh_gen_mgr.hpp
1 #pragma once
2
3 #include <thread>
4 #include <queue>
5
6 namespace dragonblocks
7 {
8         class Window;
9         
10         class MeshGenMgr : public std::thread
11         {
12                 public:
13                 class MeshGenerator
14                 {
15                         public:
16                         virtual void updateMesh();
17                 };
18                 
19                 void addTask(MeshGenerator *);
20                 void step();
21                 void run();
22                 void start();
23                                 
24                 private:
25                 void generateJobList();
26                 bool runJob();
27                 
28                 std::queue<MeshGenerator *> queued_jobs;
29                 std::queue<MeshGenerator *> active_jobs;
30                 std::thread mesh_gen_thread;
31         };
32 }