correction sfx
This commit is contained in:
@@ -29,8 +29,11 @@ Audio::~Audio() {
|
||||
if (m_engine) m_engine->drop();
|
||||
}
|
||||
|
||||
void Audio::playSound(const char* sound) {
|
||||
m_engine->play2D(sound);
|
||||
void Audio::playSound(const char* name, float volume = 1.) {
|
||||
irrklang::ISound* sfx = m_engine->play2D(name, false, true);
|
||||
sfx->setVolume(volume);
|
||||
sfx->setIsPaused(false);
|
||||
m_sfxes.push_back(sfx);
|
||||
}
|
||||
|
||||
void Audio::Update3DAudio(Vector3f pos, Vector3f dir, Vector3f vel) {
|
||||
@@ -40,9 +43,10 @@ void Audio::Update3DAudio(Vector3f pos, Vector3f dir, Vector3f vel) {
|
||||
}
|
||||
|
||||
irrklang::ISound* Audio::Create3DAudioObj(irrklang::ISound* sound, const char* name, Vector3f pos, Vector3f vel, bool is_looped = false, float volume = 1) {
|
||||
sound = m_engine->play3D(name, irrklang::vec3df(pos.x, pos.y, pos.z), is_looped, false, true, is_looped? irrklang::ESM_STREAMING: irrklang::ESM_NO_STREAMING, true);
|
||||
sound = m_engine->play3D(name, irrklang::vec3df(pos.x, pos.y, pos.z), is_looped, true, true, is_looped? irrklang::ESM_STREAMING: irrklang::ESM_NO_STREAMING, true);
|
||||
sound->setVelocity(irrklang::vec3df(vel.x, vel.y, vel.z));
|
||||
sound->setVolume(volume);
|
||||
sound->setIsPaused(false);
|
||||
return sound;
|
||||
}
|
||||
|
||||
@@ -56,6 +60,17 @@ void Audio::Render3DAudioObj(irrklang::ISound* sound, Vector3f& pos, Vector3f& v
|
||||
// m_music = m_engine->play2D(music, false, false, false, irrklang::ESM_STREAMING);
|
||||
//}
|
||||
|
||||
void Audio::CleanupSFX() {
|
||||
while (!m_sfxes.empty()) {
|
||||
irrklang::ISound* sfx = m_sfxes.back();
|
||||
if (sfx->isFinished()) {
|
||||
sfx->drop(); // drop() fait deja la job du delete sfx.
|
||||
}
|
||||
else break;
|
||||
m_sfxes.pop_back();
|
||||
}
|
||||
}
|
||||
|
||||
void Audio::ToggleMusicState(GameState state) {
|
||||
if (m_music_on) {
|
||||
switch (state) {
|
||||
|
Reference in New Issue
Block a user