diff --git a/include/Sound/SoundSystem.h b/include/Sound/SoundSystem.h index 254b989..26d02e1 100644 --- a/include/Sound/SoundSystem.h +++ b/include/Sound/SoundSystem.h @@ -27,14 +27,7 @@ public: : System(world, eventBroker) { } ~SoundSystem(); void Initialize() override; - - //void UpdateEntity(double dt, EntityID entity, EntityID parent) override; void Update(double dt) override; - //void OnComponentCreated(std::string type, std::shared_ptr component) override; - //void OnComponentRemoved(std::string type, Component* component) override; - //void PlaySound(Components::SoundEmitter* emitter, std::string path); // Use if you want to play a temporary .wav file not from component - //void PlaySound(std::shared_ptr emitter); // Use if you want to play .wav file from component - //void StopSound(std::shared_ptr emitter); @@ -45,13 +38,11 @@ private: dd::EventRelay m_EContact; bool OnPlaySFX(const dd::Events::PlaySFX &event); bool OnContact(const dd::Events::Contact &event); - - ALuint LoadFile(std::string fileName); ALuint CreateSource(); - //std::map m_Sources; - + std::map m_Sources; + //std::list //Temp ALuint m_Source; diff --git a/src/game/CMakeLists.txt b/src/game/CMakeLists.txt index 562dad8..f608d66 100755 --- a/src/game/CMakeLists.txt +++ b/src/game/CMakeLists.txt @@ -9,6 +9,8 @@ find_package(ZLIB REQUIRED) find_package(PNG REQUIRED) find_package(BGFX REQUIRED) find_package(liquidfun REQUIRED) +# Because FindOpenAL is retarded +set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${CMAKE_SOURCE_DIR}/deps/include/AL") find_package(OpenAL REQUIRED) # GLM diff --git a/src/game/Sound/Sound.cpp b/src/game/Sound/Sound.cpp index f38ddf7..d2012c3 100644 --- a/src/game/Sound/Sound.cpp +++ b/src/game/Sound/Sound.cpp @@ -7,8 +7,6 @@ dd::Sound::Sound(std::string path) ALuint dd::Sound::LoadFile(std::string path) { - - LOG_ERROR("Detta meddelande ska du bara få 1 gång! -----------------------------"); if (m_BufferCache.find(path) != m_BufferCache.end()) { return m_BufferCache[path]; } diff --git a/src/game/Sound/SoundSystem.cpp b/src/game/Sound/SoundSystem.cpp index 9ba277f..8b25cea 100644 --- a/src/game/Sound/SoundSystem.cpp +++ b/src/game/Sound/SoundSystem.cpp @@ -3,7 +3,8 @@ dd::Systems::SoundSystem::~SoundSystem() { - //alDeleteSources(1, m_Source); + alSourcei(m_Source, AL_BUFFER, 0); + alDeleteSources(1, &m_Source); } void dd::Systems::SoundSystem::Initialize() @@ -20,9 +21,17 @@ void dd::Systems::SoundSystem::Initialize() } alGetError(); + + //Create source + m_Source = CreateSource(); + alSpeedOfSound(340.29f); // Speed of sound m/s alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED); + const ALfloat pos[3] = {0, 0, 0}; + alListenerfv(AL_POSITION, pos); + alSourcefv(m_Source, AL_POSITION, pos); + //Subscribe to events EVENT_SUBSCRIBE_MEMBER(m_EContact, &SoundSystem::OnContact); EVENT_SUBSCRIBE_MEMBER(m_EPlaySFX, &SoundSystem::OnPlaySFX); @@ -30,19 +39,14 @@ void dd::Systems::SoundSystem::Initialize() void dd::Systems::SoundSystem::Update(double dt) { - const ALfloat pos[3] = {0, 0, 0}; - alListenerfv(AL_POSITION, pos); - alSourcefv(m_Source, AL_POSITION, pos); } bool dd::Systems::SoundSystem::OnPlaySFX(const dd::Events::PlaySFX &event) { - m_Source = CreateSource(); - //ALuint buffer = LoadFile(event.path); //change to resourcemanager load + //m_Source = CreateSource(); Sound *sound = ResourceManager::Load(event.path); ALuint buffer = sound->Buffer(); - alSourcei(m_Source, AL_BUFFER, buffer); alSourcePlay(m_Source); } @@ -73,8 +77,3 @@ ALuint dd::Systems::SoundSystem::CreateSource() return source; } - -ALuint dd::Systems::SoundSystem::LoadFile(std::string path) -{ - /*Moved code*/ -}