Pass current-dir down through XMLSound

(should allow relative paths in sound XML files)
This commit is contained in:
James Turner
2010-09-06 09:26:46 +01:00
parent 289e768ca5
commit d75ce1e12e
4 changed files with 6 additions and 7 deletions
+2 -2
View 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()), _absolute_pos(SGVec3d::zeros()),
_relative_pos(SGVec3d::zeros()), _relative_pos(SGVec3d::zeros()),
_direction(SGVec3d::zeros()), _direction(SGVec3d::zeros()),
@@ -111,7 +111,7 @@ SGSoundSample::SGSoundSample( const char *path, const char *file ) :
_static_changed(true), _static_changed(true),
_is_file(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();
} }
+1 -2
View File
@@ -60,11 +60,10 @@ public:
/** /**
* Constructor * Constructor
* @param path Path name to sound
* @param file File name of sound * @param file File name of sound
Buffer data is freed by the sample group Buffer data is freed by the sample group
*/ */
SGSoundSample( const char *path, const char *file ); SGSoundSample(const char *file, const SGPath& currentDir);
/** /**
* Constructor. * Constructor.
+2 -2
View File
@@ -84,7 +84,7 @@ SGXmlSound::~SGXmlSound()
void void
SGXmlSound::init(SGPropertyNode *root, SGPropertyNode *node, SGXmlSound::init(SGPropertyNode *root, SGPropertyNode *node,
SGSampleGroup *sgrp, SGSampleGroup *avionics, SGSampleGroup *sgrp, SGSampleGroup *avionics,
const string &path) const SGPath& currentDir)
{ {
// //
@@ -272,7 +272,7 @@ SGXmlSound::init(SGPropertyNode *root, SGPropertyNode *node,
} else { } else {
_sgrp = sgrp; _sgrp = sgrp;
} }
_sample = new SGSoundSample( path.c_str(), node->getStringValue("path", "")); _sample = new SGSoundSample(node->getStringValue("path", ""), currentDir);
if (!_sample->file_path().exists()) { if (!_sample->file_path().exists()) {
throw sg_io_exception("XML sound: couldn't find file: " + _sample->file_path().str()); throw sg_io_exception("XML sound: couldn't find file: " + _sample->file_path().str());
} }
+1 -1
View File
@@ -104,7 +104,7 @@ public:
* @param path The path where the audio files remain. * @param path The path where the audio files remain.
*/ */
virtual void init (SGPropertyNode *, SGPropertyNode *, SGSampleGroup *, 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.