X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp.cpp;h=57651e3b754370602eca2d92706dd000573df1fb;hb=e53a0e2e711a7d8bd9b0ddacd1360aa14370643f;hp=a6f81f1210ecb677e0043341792ab8a0f9dba8ae;hpb=f90ec88e6728ce865bcf892c810a36abd90d9001;p=blank.git diff --git a/src/app.cpp b/src/app.cpp index a6f81f1..57651e3 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -13,7 +13,8 @@ Application::Application(const Config &config) , window() , ctx(window.CreateContext()) , init_glew() -, program() +, chunk_prog() +, entity_prog() , cam() , world(config.world) , interface(config.interface, world) @@ -29,7 +30,7 @@ Application::Application(const Config &config) Entity &Application::MakeTestEntity(World &world) { Entity &e = world.AddEntity(); e.Position({ 0.0f, 0.0f, 0.0f }); - e.SetShape(world.BlockTypes()[1]->shape, { 1.0f, 1.0f, 0.0f }); + e.SetShape(world.BlockTypes()[1].shape, { 1.0f, 1.0f, 0.0f }); e.AngularVelocity(glm::quat(glm::vec3{ 0.00001f, 0.000006f, 0.000013f })); return e; } @@ -87,11 +88,16 @@ void Application::HandleEvents() { while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: + interface.HandlePress(event.key); + break; case SDL_KEYUP: - interface.Handle(event.key); + interface.HandleRelease(event.key); break; case SDL_MOUSEBUTTONDOWN: - interface.Handle(event.button); + interface.HandlePress(event.button); + break; + case SDL_MOUSEBUTTONUP: + interface.HandleRelease(event.button); break; case SDL_MOUSEMOTION: interface.Handle(event.motion); @@ -134,12 +140,12 @@ void Application::Update(int dt) { void Application::Render() { GLContext::Clear(); - program.Activate(); + chunk_prog.SetProjection(cam.Projection()); + entity_prog.SetProjection(cam.Projection()); - program.SetProjection(cam.Projection()); - world.Render(program); + world.Render(chunk_prog, entity_prog); - interface.Render(program); + interface.Render(entity_prog); window.Flip(); }