]> git.mxchange.org Git - flightgear.git/blobdiff - src/Sound/fg_fx.cxx
MIPSpro 7.4 fixes
[flightgear.git] / src / Sound / fg_fx.cxx
index f76bfdd94a0fdaab5205cb3bb53ae4f074aa7d71..93e8b779b770ac61e256ec4c6e93c633e2d674f7 100644 (file)
 //
 // $Id$
 
-#include <simgear/misc/props.hxx>
-#include <simgear/misc/sg_path.hxx>
+#ifdef _MSC_VER
+#pragma warning (disable: 4786)
+#endif
+
 #include <simgear/debug/logstream.hxx>
-#include <simgear/misc/exception.hxx>
+#include <simgear/structure/exception.hxx>
 #ifdef __BORLANDC__
 #  define exception c_exception
 #endif
+#include <simgear/misc/sg_path.hxx>
+#include <simgear/props/props.hxx>
+#include <simgear/sound/sound.hxx>
 
 #include <Main/fg_props.hxx>
 
 #include "fg_fx.hxx"
-#include "fg_sound.hxx"
 
 
 FGFX::FGFX ()
@@ -41,23 +45,25 @@ FGFX::FGFX ()
 
 FGFX::~FGFX ()
 {
+   _sound.clear();
 }
 
 void
 FGFX::init()
 {
-   const SGPropertyNode * node = fgGetNode("/sim/sound", true);
+   SGPropertyNode * node = fgGetNode("/sim/sound", true);
    int i;
 
+   string path_str = node->getStringValue("path");
    SGPath path( globals->get_fg_root() );
-   if (node->getStringValue("path") == "") {
-      SG_LOG(SG_GENERAL, SG_ALERT, "Incorect path in configuration file.");
+   if (path_str.empty()) {
+      SG_LOG(SG_GENERAL, SG_ALERT, "Incorrect path in configuration file.");
       return;
    }
 
-   path.append(node->getStringValue("path"));
-   SG_LOG(SG_GENERAL, SG_INFO, "Reading Instrument " << node->getName()
-    << " from " << path.str());
+   path.append(path_str.c_str());
+   SG_LOG(SG_GENERAL, SG_INFO, "Reading sound " << node->getName()
+          << " from " << path.str());
 
    SGPropertyNode root;
    try {
@@ -70,16 +76,22 @@ FGFX::init()
 
    node = root.getNode("fx");
    for (i = 0; i < node->nChildren(); i++) {
-      FGSound * sound;
-      sound = new FGSound(node->getChild(i));
-      _sound.push_back(sound);
-   }
+      SGSound *sound = new SGSound();
 
-   for (i = 0; i < _sound.size(); i++ ) {
-      _sound[i]->init();
+      sound->init(globals->get_props(), node->getChild(i),
+                  globals->get_soundmgr(), globals->get_fg_root());
+
+      _sound.push_back(sound);
    }
 }
 
+void
+FGFX::reinit()
+{
+   _sound.clear();
+   init();
+};
+
 void
 FGFX::bind ()
 {
@@ -91,10 +103,12 @@ FGFX::unbind ()
 }
 
 void
-FGFX::update (int dt)
+FGFX::update (double dt)
 {
-   for (int i = 0; i < _sound.size(); i++ )
-      _sound[i]->update(dt);
+    if (fgGetBool("/sim/sound/audible")) {
+        for (unsigned int i = 0; i < _sound.size(); i++ )
+            _sound[i]->update(dt);
+    }
 }
 
 // end of fg_fx.cxx