]> git.mxchange.org Git - flightgear.git/commitdiff
Allow for a different property root location besides '/'
authorErik Hofman <erik@ehofman.com>
Sun, 20 Nov 2011 14:03:48 +0000 (15:03 +0100)
committerErik Hofman <erik@ehofman.com>
Sun, 20 Nov 2011 14:03:48 +0000 (15:03 +0100)
src/Sound/fg_fx.cxx
src/Sound/fg_fx.hxx

index 376498c7f30ed881b17c480e1ef0465232e2e914..eac5179baf844ea9d6ee20459d31a749e2a0e50a 100644 (file)
 #include <simgear/sound/soundmgr_openal.hxx>
 #include <simgear/sound/xmlsound.hxx>
 
-FGFX::FGFX ( SGSoundMgr *smgr, const string &refname ) :
+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) ),
-    _avionics_enabled( fgGetNode("/sim/sound/avionics/enabled", true) ),
-    _avionics_volume( fgGetNode("/sim/sound/avionics/volume", true) ),
-    _avionics_external( fgGetNode("/sim/sound/avionics/external-view", true) ),
-    _internal( fgGetNode("/sim/current-view/internal", true) )
+    _volume( fgGetNode("/sim/sound/effects/volume", true) )
 {
+    if (!props) _props = globals->get_props();
+
+    _avionics_enabled = _props->getNode("sim/sound/avionics/enabled", true);
+    _avionics_volume = _props->getNode("sim/sound/avionics/volume", true);
+    _avionics_ext = _props->getNode("sim/sound/avionics/external-view", true);
+    _internal = _props->getNode("sim/current-view/internal", true);
+
     SGSampleGroup::_smgr = smgr;
     SGSampleGroup::_refname = refname;
     SGSampleGroup::_smgr->add(this, refname);
@@ -67,7 +71,7 @@ FGFX::~FGFX ()
 void
 FGFX::init()
 {
-    SGPropertyNode *node = fgGetNode("/sim/sound", true);
+    SGPropertyNode *node = _props->getNode("sim/sound", true);
 
     string path_str = node->getStringValue("path");
     if (path_str.empty()) {
@@ -121,12 +125,12 @@ FGFX::reinit()
 void
 FGFX::update (double dt)
 {
-    bool active = _avionics_external->getBoolValue() ||
+    bool active = _avionics_ext->getBoolValue() ||
                   _internal->getBoolValue();
 
-    if ( active && _avionics_enabled->getBoolValue() )
+    if ( active && _avionics_enabled->getBoolValue() ) {
         _avionics->resume(); // no-op if already in resumed state
-    else
+    else
         _avionics->suspend();
     _avionics->set_volume( _avionics_volume->getFloatValue() );
 
index 8051ce4aa2c91af9acef21d154d04c8013326f44..a46d8583cd1dd54f1a3737ff1046beac936e7f06 100644 (file)
@@ -49,7 +49,7 @@ class FGFX : public SGSampleGroup
 
 public:
 
-    FGFX ( SGSoundMgr *smgr, const string &refname );
+    FGFX ( SGSoundMgr *smgr, const string &refname, SGPropertyNode *props = 0 );
     virtual ~FGFX ();
 
     virtual void init ();
@@ -61,11 +61,12 @@ private:
     SGSharedPtr<SGSampleGroup> _avionics;
     std::vector<SGXmlSound *> _sound;
 
+    SGPropertyNode_ptr _props;
     SGPropertyNode_ptr _enabled;
     SGPropertyNode_ptr _volume;
     SGPropertyNode_ptr _avionics_enabled;
     SGPropertyNode_ptr _avionics_volume;
-    SGPropertyNode_ptr _avionics_external;
+    SGPropertyNode_ptr _avionics_ext;
     SGPropertyNode_ptr _internal;
 };