Apply patch [3473792] - LWS loader failed to find LWO files referenced with inaccessible, absolute paths, but actually residing in the folder of the LWS file. Applied the patch to FileSystemFilter, so all loaders do this now.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@1113 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
This commit is contained in:
aramis_acg
2012-01-15 13:46:21 +00:00
parent b29b69f42b
commit 81ef6af2df
2 changed files with 25 additions and 5 deletions

View File

@@ -172,7 +172,7 @@ private:
void BuildPath (std::string& in) const
{
// if we can already access the file, great.
if (in.length() < 3 || wrapped->Exists(in.c_str())) {
if (in.length() < 3 || wrapped->Exists(in)) {
return;
}
@@ -180,8 +180,25 @@ private:
if (in[1] != ':') {
// append base path and try
in = base + in;
if (wrapped->Exists(in.c_str())) {
const std::string tmp = base + in;
if (wrapped->Exists(tmp)) {
in = tmp;
return;
}
}
// Chop of the file name and look in the current directory
size_t pos = in.rfind("/");
if (std::string::npos == pos) {
pos = in.rfind("\\");
}
if (std::string::npos != pos) {
std::string tmp = ".";
tmp += wrapped->getOsSeparator();
tmp += in.substr(pos+1, in.length()-pos);
if (wrapped->Exists(tmp)) {
in = tmp;
return;
}
}