]> git.lizzy.rs Git - dragonblocks3d.git/blobdiff - src/dragonblocks/mesh_gen_mgr.hpp
Multithreading
[dragonblocks3d.git] / src / dragonblocks / mesh_gen_mgr.hpp
diff --git a/src/dragonblocks/mesh_gen_mgr.hpp b/src/dragonblocks/mesh_gen_mgr.hpp
new file mode 100644 (file)
index 0000000..57b6192
--- /dev/null
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <thread>
+#include <queue>
+
+namespace dragonblocks
+{
+       class Window;
+       
+       class MeshGenMgr : public std::thread
+       {
+               public:
+               class MeshGenerator
+               {
+                       public:
+                       virtual void updateMesh();
+               };
+               
+               void addTask(MeshGenerator *);
+               void step();
+               void run();
+               void start();
+                               
+               private:
+               void generateJobList();
+               bool runJob();
+               
+               std::queue<MeshGenerator *> queued_jobs;
+               std::queue<MeshGenerator *> active_jobs;
+               std::thread mesh_gen_thread;
+       };
+}