From 831f81d97cd1a3383b866ca4e7ee5b7577466ef5 Mon Sep 17 00:00:00 2001 From: Erik Hofman Date: Sat, 3 Dec 2011 14:40:48 +0100 Subject: [PATCH] Properly construct a string from another string and an integer, use a relative path for sound construction, allow enable/disable aimodel sounds using /sim/sound/aimodels/enabled --- src/AIModel/AIBase.cxx | 13 ++++++++++--- src/Sound/fg_fx.cxx | 20 ++++++++++++++------ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/AIModel/AIBase.cxx b/src/AIModel/AIBase.cxx index d2e2fe25d..95d023296 100644 --- a/src/AIModel/AIBase.cxx +++ b/src/AIModel/AIBase.cxx @@ -147,7 +147,10 @@ FGAIBase::~FGAIBase() { if (_refID != 0 && _refID != 1) { SGSoundMgr *smgr = globals->get_soundmgr(); - smgr->remove("aifx:"+_refID); + stringstream name; + name << "aifx:"; + name << _refID; + smgr->remove(name.str()); } delete fp; @@ -221,7 +224,8 @@ void FGAIBase::update(double dt) { _fx->set_orientation( orient ); SGVec3d velocity; - velocity = SGVec3d( speed_north_deg_sec, speed_east_deg_sec, pitch*speed ); + velocity = SGVec3d( speed_north_deg_sec, speed_east_deg_sec, + pitch*speed ); _fx->set_velocity( velocity ); } else if (_aimodel) @@ -234,7 +238,10 @@ void FGAIBase::update(double dt) { // initialize the sound configuration SGSoundMgr *smgr = globals->get_soundmgr(); - _fx = new FGFX(smgr, "aifx:"+_refID, props); + stringstream name; + name << "aifx:"; + name << _refID; + _fx = new FGFX(smgr, name.str(), props); _fx->init(); } } diff --git a/src/Sound/fg_fx.cxx b/src/Sound/fg_fx.cxx index c8c6b49f3..2df20387d 100644 --- a/src/Sound/fg_fx.cxx +++ b/src/Sound/fg_fx.cxx @@ -40,11 +40,19 @@ #include FGFX::FGFX ( SGSoundMgr *smgr, const string &refname, SGPropertyNode *props ) : - _props( props ), - _enabled( fgGetNode("/sim/sound/effects/enabled", true) ), - _volume( fgGetNode("/sim/sound/effects/volume", true) ) + _props( props ) { - if (!props) _props = globals->get_props(); + if (!props) { + _props = globals->get_props(); + _enabled = fgGetNode("/sim/sound/effects/enabled", true); + _volume = fgGetNode("/sim/sound/effects/volume", true); + } else { + _enabled = _props->getNode("/sim/sound/aimodels/enabled", true); + _enabled->setBoolValue(fgGetBool("/sim/sound/effects/enabled")); + _volume = _props->getNode("/sim/sound/aimodels/volume", true); + _volume->setFloatValue(fgGetFloat("/sim/sound/effects/volume")); +_volume->setFloatValue(0.1f); + } _avionics_enabled = _props->getNode("sim/sound/avionics/enabled", true); _avionics_volume = _props->getNode("sim/sound/avionics/volume", true); @@ -102,9 +110,9 @@ FGFX::init() SGXmlSound *sound = new SGXmlSound(); try { - sound->init(globals->get_props(), node->getChild(i), this, +// sound->init(globals->get_props(), node->getChild(i), this, + sound->init(_props, node->getChild(i), this, _avionics, path.dir()); - _sound.push_back(sound); } catch ( sg_exception &e ) { SG_LOG(SG_SOUND, SG_ALERT, e.getFormattedMessage()); -- 2.39.5