New Property layout:
/sim/sound/enabled enable/disable the use of OpenAL /sin/sound/pause master mute, effects all SampleGroups /sim/sound/volume master volume /sim/sound/effects/enabled enable/disable (mute) sound fx /sim/sound/effects/volume effects volume /sim/sound/chatter/enabled enable/disable (mute) atc chatter /sim/sound/chatter/volume chatter (sample queue) volume
This commit is contained in:
parent
3abb7afa45
commit
3a4892cede
5 changed files with 49 additions and 33 deletions
|
@ -480,7 +480,23 @@ static void fgMainLoop( void ) {
|
||||||
// Update the sound manager last so it can use the CPU while the GPU
|
// Update the sound manager last so it can use the CPU while the GPU
|
||||||
// is processing the scenery (doubled the frame-rate for me) -EMH-
|
// is processing the scenery (doubled the frame-rate for me) -EMH-
|
||||||
#ifdef ENABLE_AUDIO_SUPPORT
|
#ifdef ENABLE_AUDIO_SUPPORT
|
||||||
globals->get_soundmgr()->update(delta_time_sec);
|
static SGPropertyNode *sound_pause = fgGetNode("/sim/sound/pause");
|
||||||
|
static SGSoundMgr *smgr = globals->get_soundmgr();
|
||||||
|
static bool smgr_suspend = false;
|
||||||
|
if (smgr_suspend != sound_pause->getBoolValue()) {
|
||||||
|
if (smgr_suspend == false) { // request to suspend
|
||||||
|
smgr->suspend();
|
||||||
|
} else {
|
||||||
|
smgr->resume();
|
||||||
|
}
|
||||||
|
smgr_suspend = sound_pause->getBoolValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (smgr_suspend == false) {
|
||||||
|
static SGPropertyNode *volume = fgGetNode("/sim/sound/volume");
|
||||||
|
smgr->set_volume(volume->getFloatValue());
|
||||||
|
smgr->update(delta_time_sec);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// END Tile Manager udpates
|
// END Tile Manager udpates
|
||||||
|
@ -488,15 +504,11 @@ static void fgMainLoop( void ) {
|
||||||
if (!scenery_loaded && globals->get_tile_mgr()->isSceneryLoaded()
|
if (!scenery_loaded && globals->get_tile_mgr()->isSceneryLoaded()
|
||||||
&& cur_fdm_state->get_inited()) {
|
&& cur_fdm_state->get_inited()) {
|
||||||
fgSetBool("sim/sceneryloaded",true);
|
fgSetBool("sim/sceneryloaded",true);
|
||||||
#ifdef ENABLE_AUDIO_SUPPORT
|
if (fgGetBool("/sim/sound/enabled")) {
|
||||||
if (fgGetBool("/sim/sound/enabled") == true) {
|
smgr->activate();
|
||||||
float volume = fgGetFloat("/sim/sound/volume");
|
} else {
|
||||||
globals->get_soundmgr()->set_volume(volume);
|
smgr->stop();
|
||||||
globals->get_soundmgr()->activate();
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
globals->get_soundmgr()->stop();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fgRequestRedraw();
|
fgRequestRedraw();
|
||||||
|
|
|
@ -39,16 +39,18 @@
|
||||||
#include <simgear/sound/xmlsound.hxx>
|
#include <simgear/sound/xmlsound.hxx>
|
||||||
|
|
||||||
FGFX::FGFX ( SGSoundMgr *smgr, const string &refname ) :
|
FGFX::FGFX ( SGSoundMgr *smgr, const string &refname ) :
|
||||||
last_pause( false ),
|
last_enabled( true ),
|
||||||
last_volume( 0.0 ),
|
last_volume( 0.0 ),
|
||||||
_pause( fgGetNode("/sim/sound/pause") ),
|
_enabled( fgGetNode("/sim/sound/effects/enabled", true) ),
|
||||||
_volume( fgGetNode("/sim/sound/volume") )
|
_volume( fgGetNode("/sim/sound/effects/volume", true) )
|
||||||
{
|
{
|
||||||
SGSampleGroup::_smgr = smgr;
|
SGSampleGroup::_smgr = smgr;
|
||||||
SGSampleGroup::_refname = refname;
|
SGSampleGroup::_refname = refname;
|
||||||
SGSampleGroup::_smgr->add(this, refname);
|
SGSampleGroup::_smgr->add(this, refname);
|
||||||
_avionics = _smgr->find("avionics", true);
|
_avionics = _smgr->find("avionics", true);
|
||||||
_avionics->tie_to_listener();
|
_avionics->tie_to_listener();
|
||||||
|
_enabled->setBoolValue(true);
|
||||||
|
_volume->setFloatValue(1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -116,17 +118,17 @@ FGFX::reinit()
|
||||||
void
|
void
|
||||||
FGFX::update (double dt)
|
FGFX::update (double dt)
|
||||||
{
|
{
|
||||||
bool new_pause = _pause->getBoolValue();
|
bool new_enabled = _enabled->getBoolValue();
|
||||||
if ( new_pause != last_pause ) {
|
if ( new_enabled != last_enabled ) {
|
||||||
if ( new_pause ) {
|
if ( new_enabled ) {
|
||||||
suspend();
|
|
||||||
} else {
|
|
||||||
resume();
|
resume();
|
||||||
|
} else {
|
||||||
|
suspend();
|
||||||
}
|
}
|
||||||
last_pause = new_pause;
|
last_enabled = new_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !new_pause ) {
|
if ( new_enabled ) {
|
||||||
double volume = _volume->getDoubleValue();
|
double volume = _volume->getDoubleValue();
|
||||||
if ( volume != last_volume ) {
|
if ( volume != last_volume ) {
|
||||||
set_volume( volume );
|
set_volume( volume );
|
||||||
|
|
|
@ -60,10 +60,10 @@ private:
|
||||||
SGSharedPtr<SGSampleGroup> _avionics;
|
SGSharedPtr<SGSampleGroup> _avionics;
|
||||||
std::vector<SGXmlSound *> _sound;
|
std::vector<SGXmlSound *> _sound;
|
||||||
|
|
||||||
bool last_pause;
|
bool last_enabled;
|
||||||
double last_volume;
|
double last_volume;
|
||||||
|
|
||||||
SGPropertyNode_ptr _pause;
|
SGPropertyNode_ptr _enabled;
|
||||||
SGPropertyNode_ptr _volume;
|
SGPropertyNode_ptr _volume;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -37,14 +37,16 @@
|
||||||
#include <simgear/sound/sample_openal.hxx>
|
#include <simgear/sound/sample_openal.hxx>
|
||||||
|
|
||||||
FGSampleQueue::FGSampleQueue ( SGSoundMgr *smgr, const string &refname ) :
|
FGSampleQueue::FGSampleQueue ( SGSoundMgr *smgr, const string &refname ) :
|
||||||
last_pause( false ),
|
last_enabled( true ),
|
||||||
last_volume( 0.0 ),
|
last_volume( 0.0 ),
|
||||||
_pause( fgGetNode("/sim/sound/pause") ),
|
_enabled( fgGetNode("/sim/sound/chatter/enabled", true) ),
|
||||||
_volume( fgGetNode("/sim/sound/volume") )
|
_volume( fgGetNode("/sim/sound/chatter/volume", true) )
|
||||||
{
|
{
|
||||||
SGSampleGroup::_smgr = smgr;
|
SGSampleGroup::_smgr = smgr;
|
||||||
SGSampleGroup::_smgr->add(this, refname);
|
SGSampleGroup::_smgr->add(this, refname);
|
||||||
SGSampleGroup::_refname = refname;
|
SGSampleGroup::_refname = refname;
|
||||||
|
_enabled->setBoolValue(true);
|
||||||
|
_volume->setFloatValue(1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,17 +63,17 @@ void
|
||||||
FGSampleQueue::update (double dt)
|
FGSampleQueue::update (double dt)
|
||||||
{
|
{
|
||||||
// command sound manger
|
// command sound manger
|
||||||
bool new_pause = _pause->getBoolValue();
|
bool new_enabled = _enabled->getBoolValue();
|
||||||
if ( new_pause != last_pause ) {
|
if ( new_enabled != last_enabled ) {
|
||||||
if ( new_pause ) {
|
if ( new_enabled ) {
|
||||||
suspend();
|
|
||||||
} else {
|
|
||||||
resume();
|
resume();
|
||||||
|
} else {
|
||||||
|
suspend();
|
||||||
}
|
}
|
||||||
last_pause = new_pause;
|
last_enabled = new_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !new_pause ) {
|
if ( new_enabled ) {
|
||||||
double volume = _volume->getDoubleValue();
|
double volume = _volume->getDoubleValue();
|
||||||
if ( volume != last_volume ) {
|
if ( volume != last_volume ) {
|
||||||
set_volume( volume );
|
set_volume( volume );
|
||||||
|
|
|
@ -57,10 +57,10 @@ private:
|
||||||
|
|
||||||
std::queue< SGSharedPtr<SGSoundSample> > _messages;
|
std::queue< SGSharedPtr<SGSoundSample> > _messages;
|
||||||
|
|
||||||
bool last_pause;
|
bool last_enabled;
|
||||||
double last_volume;
|
double last_volume;
|
||||||
|
|
||||||
SGPropertyNode_ptr _pause;
|
SGPropertyNode_ptr _enabled;
|
||||||
SGPropertyNode_ptr _volume;
|
SGPropertyNode_ptr _volume;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue