From 61ffbf4615c4ad51d1cdd4cfe35ff28bc00e90fc Mon Sep 17 00:00:00 2001 From: ehofman Date: Thu, 10 Dec 2009 09:56:42 +0000 Subject: [PATCH] activate atc settings in the sound mixer dialog --- src/ATCDCL/ATC.cxx | 23 ++++++++++++++++++++--- src/ATCDCL/ATC.hxx | 6 ++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/ATCDCL/ATC.cxx b/src/ATCDCL/ATC.cxx index 6bb6a2282..41c56e648 100644 --- a/src/ATCDCL/ATC.cxx +++ b/src/ATCDCL/ATC.cxx @@ -36,7 +36,7 @@ FGATC::FGATC() : _voiceOK(false), - _playing(false), + _playing(false), _sgr(NULL), freqClear(true), receiving(false), @@ -59,6 +59,11 @@ FGATC::FGATC() : { SGSoundMgr *smgr = globals->get_soundmgr(); _sgr = smgr->find("atc", true); + + _volume = fgGetNode("/sim/sound/atc/volume", true); + _enabled = fgGetNode("/sim/sound/atc/enabled", true); + _atc_external = fgGetNode("/sim/sound/atc/external-view", true); + _internal = fgGetNode("/sim/current-view/internal", true); } FGATC::~FGATC() { @@ -107,6 +112,18 @@ void FGATC::Update(double dt) { } } +#ifdef ENABLE_AUDIO_SUPPORT + bool active = _atc_external->getBoolValue() || + _internal->getBoolValue(); + + if ( active && _enabled->getBoolValue() ) { + _sgr->set_volume( _volume->getFloatValue() ); + _sgr->resume(); // no-op if already in resumed state + } else { + _sgr->suspend(); + } +#endif + if(_transmit) { _counter = 0.0; _max_count = 5.0; // FIXME - hardwired length of message - need to calculate it! @@ -232,7 +249,7 @@ void FGATC::Render(string& msg, const float volume, #ifdef ENABLE_AUDIO_SUPPORT _voice = (_voiceOK && fgGetBool("/sim/sound/voice")); if(_voice) { - size_t len; + size_t len; void* buf = _vPtr->WriteMessage((char*)msg.c_str(), &len); if(buf) { NoRender(refname); @@ -325,7 +342,7 @@ std::istream& operator >> ( std::istream& fin, ATCData& a ) } double lat, lon, elev; - + fin >> lat >> lon >> elev >> f >> a.range >> a.ident; a.geod = SGGeod::fromDegM(lon, lat, elev); a.name = ""; diff --git a/src/ATCDCL/ATC.hxx b/src/ATCDCL/ATC.hxx index dd3fc8be2..e2751460e 100644 --- a/src/ATCDCL/ATC.hxx +++ b/src/ATCDCL/ATC.hxx @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -247,6 +248,11 @@ private: bool _transmitting; // we are transmitting double _counter; double _max_count; + + SGPropertyNode_ptr _volume; + SGPropertyNode_ptr _enabled; + SGPropertyNode_ptr _atc_external; + SGPropertyNode_ptr _internal; }; std::istream& operator>> ( std::istream& fin, ATCData& a );