From 4e9a063de29517a9b96c5b95fb6f6c60ddee6f4c Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 18 Jul 2022 23:33:51 +0400 Subject: [PATCH 1/2] Fix MacOS build --- files/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/files/CMakeLists.txt b/files/CMakeLists.txt index 587c3fa1d3..9461879d61 100644 --- a/files/CMakeLists.txt +++ b/files/CMakeLists.txt @@ -2,4 +2,8 @@ add_subdirectory(shaders) add_subdirectory(data) add_subdirectory(lua_api) +if (NOT DEFINED OPENMW_RESOURCES_ROOT) + return() +endif() + copy_resource_file("launcher/images/openmw.png" "${OPENMW_RESOURCES_ROOT}" "resources/openmw.png") From 4e7fe5a8bd43e127405444cee901fce77cbd3011 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Mon, 18 Jul 2022 23:34:12 +0400 Subject: [PATCH 2/2] Set VFS only once --- apps/openmw/mwgui/windowmanagerimp.cpp | 4 ++-- components/myguiplatform/myguidatamanager.cpp | 10 +++++----- components/myguiplatform/myguidatamanager.hpp | 4 ++-- components/myguiplatform/myguiplatform.cpp | 7 +++---- components/myguiplatform/myguiplatform.hpp | 4 ++-- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp index 6861fff7eb..717e8375b0 100644 --- a/apps/openmw/mwgui/windowmanagerimp.cpp +++ b/apps/openmw/mwgui/windowmanagerimp.cpp @@ -194,8 +194,8 @@ namespace MWGui , mWindowVisible(true) { mScalingFactor = std::clamp(Settings::Manager::getFloat("scaling factor", "GUI"), 0.5f, 8.f); - mGuiPlatform = new osgMyGUI::Platform(viewer, guiRoot, resourceSystem->getImageManager(), mScalingFactor); - mGuiPlatform->initialise(resourceSystem->getVFS(), "mygui", (std::filesystem::path(logpath) / "MyGUI.log").generic_string()); + mGuiPlatform = new osgMyGUI::Platform(viewer, guiRoot, resourceSystem->getImageManager(), resourceSystem->getVFS(), mScalingFactor); + mGuiPlatform->initialise("mygui", (std::filesystem::path(logpath) / "MyGUI.log").generic_string()); mGui = new MyGUI::Gui; mGui->initialise(""); diff --git a/components/myguiplatform/myguidatamanager.cpp b/components/myguiplatform/myguidatamanager.cpp index 87e20dbe85..2f8b0f81e0 100644 --- a/components/myguiplatform/myguidatamanager.cpp +++ b/components/myguiplatform/myguidatamanager.cpp @@ -18,6 +18,11 @@ void DataManager::setResourcePath(const std::string &path) mResourcePath = path; } +DataManager::DataManager(const VFS::Manager* vfs) + : mVfs(vfs) +{ +} + MyGUI::IDataStream *DataManager::getData(const std::string &name) const { // Note: MyGUI is supposed to read/free input steam itself, @@ -39,11 +44,6 @@ bool DataManager::isDataExist(const std::string &name) const return mVfs->exists(mResourcePath + "/" + name); } -void DataManager::setVfs(const VFS::Manager* vfs) -{ - mVfs = vfs; -} - const MyGUI::VectorString &DataManager::getDataListNames(const std::string &pattern) const { throw std::runtime_error("DataManager::getDataListNames is not implemented - VFS is used"); diff --git a/components/myguiplatform/myguidatamanager.hpp b/components/myguiplatform/myguidatamanager.hpp index 47203e1634..281aedd137 100644 --- a/components/myguiplatform/myguidatamanager.hpp +++ b/components/myguiplatform/myguidatamanager.hpp @@ -16,9 +16,9 @@ public: void initialise() {} void shutdown() {} - void setResourcePath(const std::string& path); + DataManager(const VFS::Manager* vfs); - void setVfs(const VFS::Manager* vfs); + void setResourcePath(const std::string& path); /** Get data stream from specified resource name. @param _name Resource name (usually file name). diff --git a/components/myguiplatform/myguiplatform.cpp b/components/myguiplatform/myguiplatform.cpp index b19bc722a2..a2964692a6 100644 --- a/components/myguiplatform/myguiplatform.cpp +++ b/components/myguiplatform/myguiplatform.cpp @@ -7,7 +7,7 @@ namespace osgMyGUI { -Platform::Platform(osgViewer::Viewer *viewer, osg::Group *guiRoot, Resource::ImageManager *imageManager, float uiScalingFactor) +Platform::Platform(osgViewer::Viewer *viewer, osg::Group *guiRoot, Resource::ImageManager *imageManager, const VFS::Manager* vfs, float uiScalingFactor) : mRenderManager(nullptr) , mDataManager(nullptr) , mLogManager(nullptr) @@ -15,7 +15,7 @@ Platform::Platform(osgViewer::Viewer *viewer, osg::Group *guiRoot, Resource::Ima { mLogManager = new MyGUI::LogManager(); mRenderManager = new RenderManager(viewer, guiRoot, imageManager, uiScalingFactor); - mDataManager = new DataManager(); + mDataManager = new DataManager(vfs); } Platform::~Platform() @@ -30,7 +30,7 @@ Platform::~Platform() mLogFacility = nullptr; } -void Platform::initialise(const VFS::Manager* vfs, const std::string &resourcePath, const std::string &_logName) +void Platform::initialise(const std::string &resourcePath, const std::string &_logName) { if (!_logName.empty() && !mLogFacility) { @@ -39,7 +39,6 @@ void Platform::initialise(const VFS::Manager* vfs, const std::string &resourcePa } mDataManager->setResourcePath(resourcePath); - mDataManager->setVfs(vfs); mRenderManager->initialise(); mDataManager->initialise(); diff --git a/components/myguiplatform/myguiplatform.hpp b/components/myguiplatform/myguiplatform.hpp index a46fedcd75..e8d3378e66 100644 --- a/components/myguiplatform/myguiplatform.hpp +++ b/components/myguiplatform/myguiplatform.hpp @@ -32,11 +32,11 @@ namespace osgMyGUI class Platform { public: - Platform(osgViewer::Viewer* viewer, osg::Group* guiRoot, Resource::ImageManager* imageManager, float uiScalingFactor); + Platform(osgViewer::Viewer* viewer, osg::Group* guiRoot, Resource::ImageManager* imageManager, const VFS::Manager* vfs, float uiScalingFactor); ~Platform(); - void initialise(const VFS::Manager* vfs, const std::string& resourcePath, const std::string& _logName = "MyGUI.log"); + void initialise(const std::string& resourcePath, const std::string& _logName = "MyGUI.log"); void shutdown();