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

View File

@@ -79,7 +79,7 @@ SGSoundSample::SGSoundSample() :
}
// 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()),
@@ -111,7 +111,7 @@ SGSoundSample::SGSoundSample( const char *path, const char *file ) :
_static_changed(true),
_is_file(true)
{
SGPath p = simgear::ResourceManager::instance()->findPath(file);
SGPath p = simgear::ResourceManager::instance()->findPath(file, currentDir);
_refname = p.str();
}

View File

@@ -60,11 +60,10 @@ public:
/**
* Constructor
* @param path Path name to sound
* @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.

View File

@@ -84,7 +84,7 @@ SGXmlSound::~SGXmlSound()
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;
}
_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());
}

View File

@@ -104,7 +104,7 @@ public:
* @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.