diff options
author | psi29a <psi29a@gmail.com> | 2021-12-26 12:40:38 +0000 |
---|---|---|
committer | psi29a <psi29a@gmail.com> | 2021-12-26 12:40:38 +0000 |
commit | 4e3e2598a270184a489dd26295032f6eb56b3875 (patch) | |
tree | 3b82c5e0311f20d26cdb4083e3a2773d69118ec9 | |
parent | a3d3c29ff9e11446d845ef64834033a124a33527 (diff) | |
parent | b06248a31f52c0c7b808d79dd2b14df5d6bf37e3 (diff) |
Merge branch 'fix_6502' into 'master'
Fix #6502
Closes #6502
See merge request OpenMW/openmw!1491
-rw-r--r-- | components/resource/scenemanager.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/components/resource/scenemanager.cpp b/components/resource/scenemanager.cpp index 5f2d78d2ed..72349dadb1 100644 --- a/components/resource/scenemanager.cpp +++ b/components/resource/scenemanager.cpp @@ -1,6 +1,7 @@ #include "scenemanager.hpp" #include <cstdlib> +#include <filesystem> #include <osg/AlphaFunc> #include <osg/Node> @@ -10,6 +11,7 @@ #include <osgUtil/IncrementalCompileOperation> +#include <osgDB/FileUtils> #include <osgDB/SharedStateManager> #include <osgDB/Registry> @@ -472,9 +474,14 @@ namespace Resource osgDB::ReaderWriter::ReadResult readImage(const std::string& filename, const osgDB::Options* options) override { + std::filesystem::path filePath(filename); + if (filePath.is_absolute()) + // It is a hack. Needed because either OSG or libcollada-dom tries to make an absolute path from + // our relative VFS path by adding current working directory. + filePath = std::filesystem::relative(filename, osgDB::getCurrentWorkingDirectory()); try { - return osgDB::ReaderWriter::ReadResult(mImageManager->getImage(filename), osgDB::ReaderWriter::ReadResult::FILE_LOADED); + return osgDB::ReaderWriter::ReadResult(mImageManager->getImage(filePath), osgDB::ReaderWriter::ReadResult::FILE_LOADED); } catch (std::exception& e) { |