Pass current-dir down through XMLSound
(should allow relative paths in sound XML files)
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user