summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpsi29a <psi29a@gmail.com>2021-12-26 12:40:38 +0000
committerpsi29a <psi29a@gmail.com>2021-12-26 12:40:38 +0000
commit4e3e2598a270184a489dd26295032f6eb56b3875 (patch)
tree3b82c5e0311f20d26cdb4083e3a2773d69118ec9
parenta3d3c29ff9e11446d845ef64834033a124a33527 (diff)
parentb06248a31f52c0c7b808d79dd2b14df5d6bf37e3 (diff)
Merge branch 'fix_6502' into 'master'
Fix #6502 Closes #6502 See merge request OpenMW/openmw!1491
-rw-r--r--components/resource/scenemanager.cpp9
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)
{