Now calculating the velocity for the listener correctly.

This commit is contained in:
stiffly
2016-01-15 15:43:20 +01:00
parent d9dd7f535f
commit 63704b2e6b
3 changed files with 14 additions and 19 deletions
+4 -4
View File
@@ -41,7 +41,7 @@ public:
SoundSystem(World* world, EventBroker* eventBroker, bool editorMode); SoundSystem(World* world, EventBroker* eventBroker, bool editorMode);
~SoundSystem(); ~SoundSystem();
// Update emitters / listener // Update emitters / listener
void Update(); void Update(double dt);
private: private:
// Help functions for working with OpenaAL // Help functions for working with OpenaAL
void setListenerPos(glm::vec3 pos) { alListener3f(AL_POSITION, pos.x, pos.y, pos.z); }; void setListenerPos(glm::vec3 pos) { alListener3f(AL_POSITION, pos.x, pos.y, pos.z); };
@@ -55,10 +55,10 @@ private:
// Logic // Logic
void initOpenAL(); void initOpenAL();
void updateEmitters(); void updateEmitters(double dt);
void updateListener(); void updateListener(double dt);
void deleteInactiveEmitters(); void deleteInactiveEmitters();
void addNewEmitters(); void addNewEmitters(double dt);
Source* createSource(std::string filePath); Source* createSource(std::string filePath);
void playSound(Source* source); void playSound(Source* source);
void stopSound(Source* source); void stopSound(Source* source);
+9 -14
View File
@@ -47,13 +47,13 @@ void SoundSystem::stopEmitters()
} }
} }
void SoundSystem::Update() void SoundSystem::Update(double dt)
{ {
m_EventBroker->Process<SoundSystem>(); m_EventBroker->Process<SoundSystem>();
addNewEmitters(); // can be optimized with "EEntityCreated" addNewEmitters(dt); // can be optimized with "EEntityCreated"
deleteInactiveEmitters(); // can be optimized with "EEntityDeleted" deleteInactiveEmitters(); // can be optimized with "EEntityDeleted"
updateEmitters(); updateEmitters( dt);
updateListener(); updateListener( dt);
} }
void SoundSystem::deleteInactiveEmitters() void SoundSystem::deleteInactiveEmitters()
@@ -85,7 +85,7 @@ void SoundSystem::deleteInactiveEmitters()
} }
} }
void SoundSystem::addNewEmitters() void SoundSystem::addNewEmitters(double dt)
{ {
auto emitterComponents = m_World->GetComponents("SoundEmitter"); auto emitterComponents = m_World->GetComponents("SoundEmitter");
if (emitterComponents == nullptr) { if (emitterComponents == nullptr) {
@@ -102,7 +102,7 @@ void SoundSystem::addNewEmitters()
} }
} }
void SoundSystem::updateEmitters() void SoundSystem::updateEmitters(double dt)
{ {
std::unordered_map<EntityID, Source*>::iterator it; std::unordered_map<EntityID, Source*>::iterator it;
for (it = m_Sources.begin(); it != m_Sources.end(); it++) { for (it = m_Sources.begin(); it != m_Sources.end(); it++) {
@@ -133,9 +133,8 @@ void SoundSystem::updateEmitters()
} }
} }
void SoundSystem::updateListener() void SoundSystem::updateListener(double dt)
{ {
int testremove = 0;
// Should only be one listener. // Should only be one listener.
auto listenerComponents = m_World->GetComponents("Listener"); auto listenerComponents = m_World->GetComponents("Listener");
if (listenerComponents == nullptr) { if (listenerComponents == nullptr) {
@@ -146,14 +145,10 @@ void SoundSystem::updateListener()
glm::vec3 previousPos; glm::vec3 previousPos;
alGetListener3f(AL_POSITION, &previousPos.x, &previousPos.y, &previousPos.z); // Get previous pos alGetListener3f(AL_POSITION, &previousPos.x, &previousPos.y, &previousPos.z); // Get previous pos
glm::vec3 nextPos = Transform::AbsolutePosition(m_World, listener); // Get next (current) pos glm::vec3 nextPos = Transform::AbsolutePosition(m_World, listener); // Get next (current) pos
glm::vec3 velocity = nextPos - previousPos; // Calculate velocity glm::vec3 velocity = glm::vec3(nextPos - previousPos) / (float)dt; // Calculate velocity
setListenerPos(nextPos); setListenerPos(nextPos);
//setListenerVel(velocity); setListenerVel(velocity);
setListenerOri(glm::eulerAngles(Transform::AbsoluteOrientation(m_World, listener))); setListenerOri(glm::eulerAngles(Transform::AbsoluteOrientation(m_World, listener)));
testremove++;
}
if (testremove > 1) {
testremove = 0;
} }
} }
+1 -1
View File
@@ -127,7 +127,7 @@ void Game::Tick()
debugTick(dt); debugTick(dt);
m_Renderer->Update(dt); m_Renderer->Update(dt);
m_EventBroker->Process<Client>(); m_EventBroker->Process<Client>();
m_SoundSystem->Update(); m_SoundSystem->Update(dt);
GLERROR("Game::Tick m_RenderQueueFactory->Update"); GLERROR("Game::Tick m_RenderQueueFactory->Update");
m_Renderer->Draw(*m_RenderFrame); m_Renderer->Draw(*m_RenderFrame);
GLERROR("Game::Tick m_Renderer->Draw"); GLERROR("Game::Tick m_Renderer->Draw");