X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2Fapp.cpp;h=59070a56311d01c7e129a852b717e9313431aae2;hb=291ff5699aa1a1dd0e8aff49543849085e883c16;hp=d13dfc6aafe7c398a633de83d48bef3857b3993f;hpb=0e3f96ecb9ade07a7b831078fee025aff44d44d4;p=blank.git diff --git a/src/app/app.cpp b/src/app/app.cpp index d13dfc6..59070a5 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -2,6 +2,7 @@ #include "Assets.hpp" #include "FrameCounter.hpp" +#include "../audio/Sound.hpp" #include "../graphics/Font.hpp" #include "../world/BlockType.hpp" #include "../world/Entity.hpp" @@ -30,14 +31,19 @@ Application::Application(const Config &config) : init(config.doublebuf, config.multisampling) , viewport() , assets(get_asset_path()) +, audio() , counter() , world(config.world) -, interface(config.interface, assets, counter, world) +, interface(config.interface, assets, audio, counter, world) , test_controller(MakeTestEntity(world)) , running(false) { viewport.VSync(config.vsync); } +Application::~Application() { + audio.StopAll(); +} + Entity &Application::MakeTestEntity(World &world) { Entity &e = world.AddEntity(); e.Name("test"); @@ -156,6 +162,14 @@ void Application::Update(int dt) { interface.Update(dt); test_controller.Update(dt); world.Update(dt); + + glm::mat4 trans = world.Player().Transform(Chunk::Pos(0, 0, 0)); + glm::vec3 dir(trans * glm::vec4(0.0f, 0.0f, -1.0f, 0.0f)); + glm::vec3 up(trans * glm::vec4(0.0f, 1.0f, 0.0f, 0.0f)); + audio.Position(world.Player().Position()); + audio.Velocity(world.Player().Velocity()); + audio.Orientation(dir, up); + counter.ExitUpdate(); } @@ -174,7 +188,8 @@ void Application::Render() { Assets::Assets(const string &base) -: fonts(base + "fonts/") { +: fonts(base + "fonts/") +, sounds(base + "sounds/") { } @@ -183,6 +198,11 @@ Font Assets::LoadFont(const string &name, int size) const { return Font(full.c_str(), size); } +Sound Assets::LoadSound(const string &name) const { + string full = sounds + name + ".wav"; + return Sound(full.c_str()); +} + void FrameCounter::EnterFrame() noexcept { last_enter = SDL_GetTicks();