#include <simgear/sound/sample_openal.hxx>
FGSampleQueue::FGSampleQueue ( SGSoundMgr *smgr, const string &refname ) :
- last_pause( true ),
+ last_enabled( true ),
last_volume( 0.0 ),
- _pause( fgGetNode("/sim/sound/pause") ),
- _volume( fgGetNode("/sim/sound/volume") )
+ _enabled( fgGetNode("/sim/sound/chatter/enabled", true) ),
+ _volume( fgGetNode("/sim/sound/chatter/volume", true) )
{
SGSampleGroup::_smgr = smgr;
SGSampleGroup::_smgr->add(this, refname);
- SGSampleGroup::_active = _smgr->is_working();
+ SGSampleGroup::_refname = refname;
}
FGSampleQueue::update (double dt)
{
// command sound manger
- bool new_pause = _pause->getBoolValue();
- if ( new_pause != last_pause ) {
- if ( new_pause ) {
- suspend();
- } else {
+ bool new_enabled = _enabled->getBoolValue();
+ if ( new_enabled != last_enabled ) {
+ if ( new_enabled ) {
resume();
+ } else {
+ suspend();
}
- last_pause = new_pause;
+ last_enabled = new_enabled;
}
- double volume = _volume->getDoubleValue();
- if ( volume != last_volume ) {
- set_volume( volume );
- last_volume = volume;
- }
+ if ( new_enabled ) {
+ double volume = _volume->getDoubleValue();
+ if ( volume != last_volume ) {
+ set_volume( volume );
+ last_volume = volume;
+ }
- // process mesage queue
- const string msgid = "Sequential Audio Message";
- bool now_playing = false;
- if ( exists( msgid ) ) {
- now_playing = is_playing( msgid );
- if ( !now_playing ) {
- // current message finished, stop and remove
- stop( msgid ); // removes source
- remove( msgid ); // removes buffer
+ // process message queue
+ const string msgid = "Sequential Audio Message";
+ bool now_playing = false;
+ if ( exists( msgid ) ) {
+ now_playing = is_playing( msgid );
+ if ( !now_playing ) {
+ // 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 ( _messages.size() > 0 ) {
- SGSampleGroup::add( _messages.front(), msgid );
- _messages.pop();
- play_once( msgid );
+ if ( !now_playing ) {
+ // message queue idle, add next sound if we have one
+ if ( _messages.size() > 0 ) {
+ SGSampleGroup::add( _messages.front(), msgid );
+ _messages.pop();
+ play_once( msgid );
+ }
}
- }
- SGSampleGroup::update(dt);
+ SGSampleGroup::update(dt);
+ }
}
// end of _samplequeue.cxx