X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp.hpp;h=23dcd0cef9cf7b3a21bf143f6204d5c836dc5641;hb=f90ec88e6728ce865bcf892c810a36abd90d9001;hp=5148a7a411a30669425b376ee9b73394802510c8;hpb=0a13b3fe342db83eef2c0ddc991a44452df77aa3;p=blank.git diff --git a/src/app.hpp b/src/app.hpp index 5148a7a..23dcd0c 100644 --- a/src/app.hpp +++ b/src/app.hpp @@ -1,12 +1,12 @@ #ifndef BLANK_APP_HPP_ #define BLANK_APP_HPP_ -#include -#include - #include "camera.hpp" +#include "controller.hpp" #include "init.hpp" +#include "interface.hpp" #include "shader.hpp" +#include "world.hpp" namespace blank { @@ -14,30 +14,51 @@ namespace blank { class Application { public: - Application(); - ~Application(); + struct Config { + bool vsync = true; + bool doublebuf = true; + int multisampling = 1; + + Interface::Config interface = Interface::Config(); + World::Config world = World::Config(); + }; + + explicit Application(const Config &); Application(const Application &) = delete; Application &operator =(const Application &) = delete; + /// run until user quits void Run(); void Loop(int dt); + /// run for n frames + void RunN(size_t n); + /// run for t milliseconds + void RunT(size_t t); + /// run for n frames, assuming t milliseconds for each + void RunS(size_t n, size_t t); + void HandleEvents(); + void Update(int dt); void Render(); + static Entity &MakeTestEntity(World &); + private: InitSDL init_sdl; + InitIMG init_img; InitGL init_gl; Window window; GLContext ctx; InitGLEW init_glew; - Program program; + DirectionalLighting program; Camera cam; + World world; + Interface interface; - GLuint vtx_buf; - GLuint mvp_handle; + RandomWalk test_controller; bool running;