]> git.lizzy.rs Git - dragonblocks3d.git/blob - src/dragonblocks/render_engine.hpp
Initial Commit
[dragonblocks3d.git] / src / dragonblocks / render_engine.hpp
1 #pragma once
2
3 #include "gl.hpp"
4
5 namespace dragonblocks
6 {       
7         class Camera;
8         class InputHandler;
9         class MeshGenThread;
10         class ShaderProgram;
11         class Scene;
12         class Window;
13
14         class RenderEngine
15         {
16                 public:
17                 static RenderEngine *create();
18
19                 Camera *camera;
20                 InputHandler *input_handler;
21                 MeshGenThread *mesh_gen_thread;
22                 Scene *scene;
23                 ShaderProgram *shader_program;
24                 Window *window;
25                 
26                 void render();
27                 void loadChunks();
28                 void loop();
29                 void updateViewMatrix();
30                 void updateProjectionMatrix();
31                 void setSky(glm::vec3);
32                 void setRenderDistance(double);
33                 void setFov(double);
34                 
35                 ~RenderEngine();
36                 
37                 private:
38                 static RenderEngine *singleton;
39                 
40                 double last_time;
41                 double render_distance;
42                 double fov;
43                 
44                 RenderEngine();
45         };
46 }