]> git.mxchange.org Git - simgear.git/commitdiff
Pass current-dir down through XMLSound
authorJames Turner <zakalawe@mac.com>
Mon, 6 Sep 2010 08:26:46 +0000 (09:26 +0100)
committerJames Turner <zakalawe@mac.com>
Mon, 6 Sep 2010 08:26:46 +0000 (09:26 +0100)
(should allow relative paths in sound XML files)

simgear/sound/sample_openal.cxx
simgear/sound/sample_openal.hxx
simgear/sound/xmlsound.cxx
simgear/sound/xmlsound.hxx

index 022cb40dc99bdaf4d0da06079d4d3f1e8e8d3a59..3c9cb864ad81403fc1d06794c3722046bde1d35f 100644 (file)
@@ -79,7 +79,7 @@ SGSoundSample::SGSoundSample() :
 }
 
 // constructor
 }
 
 // constructor
-SGSoundSample::SGSoundSample( const char *path, const char *file ) :
+SGSoundSample::SGSoundSample(const char *file, const SGPath& currentDir) :
     _absolute_pos(SGVec3d::zeros()),
     _relative_pos(SGVec3d::zeros()),
     _direction(SGVec3d::zeros()),
     _absolute_pos(SGVec3d::zeros()),
     _relative_pos(SGVec3d::zeros()),
     _direction(SGVec3d::zeros()),
@@ -111,7 +111,7 @@ SGSoundSample::SGSoundSample( const char *path, const char *file ) :
     _static_changed(true),
     _is_file(true)
 {
     _static_changed(true),
     _is_file(true)
 {
-    SGPath p = simgear::ResourceManager::instance()->findPath(file);
+    SGPath p = simgear::ResourceManager::instance()->findPath(file, currentDir);
     _refname = p.str();
 }
 
     _refname = p.str();
 }
 
index 491ba572ca220a2646f1b5302b72446371af5b93..b2afba4f33fd1da89f138e491b038e115d0625dc 100644 (file)
@@ -60,11 +60,10 @@ public:
 
     /**
      * Constructor
 
     /**
      * Constructor
-     * @param path Path name to sound
      * @param file File name of sound
        Buffer data is freed by the sample group
      */
      * @param file File name of sound
        Buffer data is freed by the sample group
      */
-    SGSoundSample( const char *path, const char *file );
+    SGSoundSample(const char *file, const SGPath& currentDir);
 
     /**
      * Constructor.
 
     /**
      * Constructor.
index 616d9514f59d976da1c4e4a7f32437929a8e8b3c..2ca9cdfa8f2f6379726149264e0e4309033a8ad8 100644 (file)
@@ -84,7 +84,7 @@ SGXmlSound::~SGXmlSound()
 void
 SGXmlSound::init(SGPropertyNode *root, SGPropertyNode *node,
                  SGSampleGroup *sgrp, SGSampleGroup *avionics,
 void
 SGXmlSound::init(SGPropertyNode *root, SGPropertyNode *node,
                  SGSampleGroup *sgrp, SGSampleGroup *avionics,
-                 const string &path)
+                 const SGPath& currentDir)
 {
 
    //
 {
 
    //
@@ -272,7 +272,7 @@ SGXmlSound::init(SGPropertyNode *root, SGPropertyNode *node,
    } else {
       _sgrp = sgrp;
    }
    } else {
       _sgrp = sgrp;
    }
-   _sample = new SGSoundSample( path.c_str(), node->getStringValue("path", ""));
+   _sample = new SGSoundSample(node->getStringValue("path", ""), currentDir);
    if (!_sample->file_path().exists()) {
       throw sg_io_exception("XML sound: couldn't find file: " + _sample->file_path().str());
    }
    if (!_sample->file_path().exists()) {
       throw sg_io_exception("XML sound: couldn't find file: " + _sample->file_path().str());
    }
index 141f5eef299bf1cbb7d98ea5735d7b59aee2d8e9..f3635b08a705393d2c8180bc2a71aeeb9681904e 100644 (file)
@@ -104,7 +104,7 @@ public:
    * @param path The path where the audio files remain.
    */
   virtual void init (SGPropertyNode *, SGPropertyNode *, SGSampleGroup *,
    * @param path The path where the audio files remain.
    */
   virtual void init (SGPropertyNode *, SGPropertyNode *, SGSampleGroup *,
-                     SGSampleGroup *, const string &);
+                     SGSampleGroup *, const SGPath& currentDir);
 
   /**
    * Check whether an event has happened and if action has to be taken.
 
   /**
    * Check whether an event has happened and if action has to be taken.