]> git.lizzy.rs Git - dragonblocks3d.git/blobdiff - src/dragonblocks/render_engine.cpp
Multithreading
[dragonblocks3d.git] / src / dragonblocks / render_engine.cpp
index 14c1da09f99fdc83b85c64896a82321cb91570ff..e5d23fba1cb2f23a2d132e391f6c17e8793c5565 100644 (file)
@@ -6,7 +6,7 @@
 #include "gldebug.hpp"
 #include "input_handler.hpp"
 #include "map.hpp"                                             // this one three
-#include "mesh_gen_thread.hpp"
+#include "mesh_gen_mgr.hpp"
 #include "render_engine.hpp"
 #include "scene.hpp"
 #include "shader_program.hpp"
@@ -16,15 +16,6 @@ using namespace std;
 using namespace glm;
 using namespace dragonblocks;
 
-RenderEngine *RenderEngine::singleton = nullptr;
-
-RenderEngine *RenderEngine::create()
-{
-       if (singleton)
-               throw runtime_error("RenderEngine already exists");
-       return singleton = new RenderEngine;
-}
-
 void RenderEngine::render()
 {
        double dtime = glfwGetTime() - last_time;
@@ -59,7 +50,6 @@ void RenderEngine::loop()
 {
        while (! window->shouldClose()) {
                render();
-               mesh_gen_thread->step();
                loadChunks();
        }
 }
@@ -94,16 +84,6 @@ void RenderEngine::setFov(double f)
        updateProjectionMatrix();
 }
 
-RenderEngine::~RenderEngine()
-{
-       delete window;
-       delete camera;
-       delete input_handler;
-       delete mesh_gen_thread;
-       delete scene;
-       delete shader_program;
-}
-
 RenderEngine::RenderEngine()
 {
        if (! glfwInit())
@@ -115,7 +95,7 @@ RenderEngine::RenderEngine()
        window = Window::create(this);
        camera = new Camera;
        input_handler = new InputHandler(camera, window);
-       mesh_gen_thread = new MeshGenThread;
+       mesh_gen_mgr = new MeshGenMgr;
        scene = new Scene;
        
        GLenum glew_init_err = glewInit();
@@ -130,3 +110,13 @@ RenderEngine::RenderEngine()
        
        last_time = glfwGetTime();
 }
+
+RenderEngine::~RenderEngine()
+{
+       delete window;
+       delete camera;
+       delete input_handler;
+       delete mesh_gen_mgr;
+       delete scene;
+       delete shader_program;
+}