1 #include "WorldState.hpp"
3 #include "Environment.hpp"
4 #include "UnloadState.hpp"
11 WorldState::WorldState(
13 const Interface::Config &ic,
14 const World::Config &wc,
18 , world(env.assets, wc, save)
20 , interface(ic, env, world) {
25 void WorldState::Handle(const SDL_Event &event) {
28 interface.HandlePress(event.key);
31 interface.HandleRelease(event.key);
33 case SDL_MOUSEBUTTONDOWN:
34 interface.HandlePress(event.button);
36 case SDL_MOUSEBUTTONUP:
37 interface.HandleRelease(event.button);
40 interface.Handle(event.motion);
43 interface.Handle(event.wheel);
46 // don't care about this leak just now
47 env.state.Switch(new UnloadState(env, world.Loader()));
54 void WorldState::Update(int dt) {
59 glm::mat4 trans = world.Player().Transform(Chunk::Pos(0, 0, 0));
60 glm::vec3 dir(trans * glm::vec4(0.0f, 0.0f, -1.0f, 0.0f));
61 glm::vec3 up(trans * glm::vec4(0.0f, 1.0f, 0.0f, 0.0f));
62 env.audio.Position(world.Player().Position());
63 env.audio.Velocity(world.Player().Velocity());
64 env.audio.Orientation(dir, up);
68 void WorldState::Render(Viewport &viewport) {
69 world.Render(viewport);
70 interface.Render(viewport);