]> git.localhorst.tv Git - blank.git/blob - src/app.hpp
control (some) application parameters via cmdline
[blank.git] / src / app.hpp
1 #ifndef BLANK_APP_HPP_
2 #define BLANK_APP_HPP_
3
4 #include <glm/glm.hpp>
5 #include <glm/gtc/matrix_transform.hpp>
6
7 #include "camera.hpp"
8 #include "controller.hpp"
9 #include "hud.hpp"
10 #include "init.hpp"
11 #include "model.hpp"
12 #include "shader.hpp"
13 #include "world.hpp"
14
15
16 namespace blank {
17
18 class Application {
19
20 public:
21         Application();
22
23         Application(const Application &) = delete;
24         Application &operator =(const Application &) = delete;
25
26         /// run until user quits
27         void Run();
28         void Loop(int dt);
29
30         /// run for n frames
31         void RunN(size_t n);
32         /// run for t milliseconds
33         void RunT(size_t t);
34         /// run for n frames, assuming t milliseconds for each
35         void RunS(size_t n, size_t t);
36
37         void HandleEvents();
38         void Update(int dt);
39         void Render();
40
41 private:
42         InitSDL init_sdl;
43         InitIMG init_img;
44         InitGL init_gl;
45         Window window;
46         GLContext ctx;
47         InitGLEW init_glew;
48         DirectionalLighting program;
49
50         Camera cam;
51         HUD hud;
52         World world;
53         FPSController controller;
54
55         OutlineModel outline;
56         bool outline_visible;
57         glm::mat4 outline_transform;
58
59         bool running;
60
61         bool place, remove, pick;
62
63         int remove_id;
64         int place_id;
65
66 };
67
68 }
69
70 #endif