X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FSound%2Ffg_fx.cxx;h=abf3a2678668dbb997b896c3010f629b5266e15d;hb=2bc7dc685b35b489730ef36050a318b331c14977;hp=da6fcece3cca9bccbcee4cdcaedccc039610c3ae;hpb=86f462933d0d7130e4e688183976620ed2ddb5ae;p=flightgear.git diff --git a/src/Sound/fg_fx.cxx b/src/Sound/fg_fx.cxx index da6fcece3..abf3a2678 100644 --- a/src/Sound/fg_fx.cxx +++ b/src/Sound/fg_fx.cxx @@ -31,45 +31,32 @@ #include "fg_fx.hxx" -#include -#include -#include +#include
+ #include +#include #include #include -#include
- -#include -#include -#include
- FGFX::FGFX ( SGSoundMgr *smgr, const string &refname ) : - last_visitor_pos(SGVec3d::zeros()), - last_model_pos(SGVec3d::zeros()), - last_pause( true ), + last_pause( false ), last_volume( 0.0 ), _pause( fgGetNode("/sim/sound/pause") ), _volume( fgGetNode("/sim/sound/volume") ) { SGSampleGroup::_smgr = smgr; + SGSampleGroup::_refname = refname; SGSampleGroup::_smgr->add(this, refname); - SGSampleGroup::_active = _smgr->is_working(); + _avionics = _smgr->find("avionics", true); } FGFX::~FGFX () { - unsigned int i; - for ( i = 0; i < _sound.size(); i++ ) { + for (unsigned int i = 0; i < _sound.size(); i++ ) { delete _sound[i]; } _sound.clear(); - - while ( _samplequeue.size() > 0 ) { - delete _samplequeue.front(); - _samplequeue.pop(); - } } @@ -105,7 +92,7 @@ FGFX::init() try { sound->init(globals->get_props(), node->getChild(i), this, - globals->get_fg_root()); + _avionics, globals->get_fg_root()); _sound.push_back(sound); } catch ( sg_exception &e ) { @@ -128,7 +115,6 @@ FGFX::reinit() void FGFX::update (double dt) { - // command sound manger bool new_pause = _pause->getBoolValue(); if ( new_pause != last_pause ) { if ( new_pause ) { @@ -139,59 +125,20 @@ FGFX::update (double dt) last_pause = new_pause; } - // process mesage queue - const string msgid = "Sequential Audio Message"; - bool now_playing = false; - if ( exists( msgid ) ) { - if ( is_playing( msgid ) ) { - // still playing, do nothing - now_playing = true; - } else { - // current message finished, stop and remove - stop( msgid ); // removes source - remove( msgid ); // removes buffer - } - } - if ( !now_playing ) { - // message queue idle, add next sound if we have one - if ( _samplequeue.size() > 0 ) { - add( _samplequeue.front(), msgid ); - _samplequeue.pop(); - play_once( msgid ); + if ( !new_pause ) { + double volume = _volume->getDoubleValue(); + if ( volume != last_volume ) { + set_volume( volume ); + last_volume = volume; } - } - - double volume = _volume->getDoubleValue(); - if ( volume != last_volume ) { - set_volume( volume ); - last_volume = volume; - } - if ( !new_pause ) { // update sound effects if not paused for ( unsigned int i = 0; i < _sound.size(); i++ ) { _sound[i]->update(dt); } - } - - SGSampleGroup::update(dt); -} -/** - * add a sound sample to the message queue which is played sequentially - * in order. - */ -void -FGFX::play_message( SGSoundSample *_sample ) -{ - _samplequeue.push( _sample ); -} -void -FGFX::play_message( const std::string& path, const std::string& fname, double volume ) -{ - SGSoundSample *sample = new SGSoundSample( path.c_str(), fname.c_str() ); - sample->set_volume( volume ); - play_message( sample ); + SGSampleGroup::update(dt); + } } // end of fg_fx.cxx