diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index e3ad2bd996..c8759a97bc 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -772,6 +772,8 @@ void OMW::Engine::prepareEngine() mWorld->setupPlayer(); mWorld->setRandomSeed(mRandomSeed); mEnvironment.setWorld(*mWorld); + mEnvironment.setWorldModel(mWorld->getWorldModel()); + mEnvironment.setWorldScene(mWorld->getWorldScene()); mWindowManager->setStore(mWorld->getStore()); mWindowManager->initUI(); diff --git a/apps/openmw/mwbase/environment.hpp b/apps/openmw/mwbase/environment.hpp index 0c159d27cd..e25d81c1d3 100644 --- a/apps/openmw/mwbase/environment.hpp +++ b/apps/openmw/mwbase/environment.hpp @@ -15,6 +15,12 @@ namespace l10n class Manager; } +namespace MWWorld +{ + class Cells; + class Scene; +} + namespace MWBase { class World; @@ -37,6 +43,8 @@ namespace MWBase static Environment* sThis; World* mWorld = nullptr; + MWWorld::Cells* mWorldModel = nullptr; // TODO: rename Cells -> WorldModel + MWWorld::Scene* mWorldScene = nullptr; SoundManager* mSoundManager = nullptr; ScriptManager* mScriptManager = nullptr; WindowManager* mWindowManager = nullptr; @@ -61,6 +69,8 @@ namespace MWBase Environment& operator=(const Environment&) = delete; void setWorld(World& value) { mWorld = &value; } + void setWorldModel(MWWorld::Cells& value) { mWorldModel = &value; } + void setWorldScene(MWWorld::Scene& value) { mWorldScene = &value; } void setSoundManager(SoundManager& value) { mSoundManager = &value; } @@ -85,6 +95,8 @@ namespace MWBase void setL10nManager(l10n::Manager& value) { mL10nManager = &value; } Misc::NotNullPtr getWorld() const { return mWorld; } + Misc::NotNullPtr getWorldModel() const { return mWorldModel; } + Misc::NotNullPtr getWorldScene() const { return mWorldScene; } Misc::NotNullPtr getSoundManager() const { return mSoundManager; } diff --git a/apps/openmw/mwworld/worldimp.hpp b/apps/openmw/mwworld/worldimp.hpp index a3a17128ae..5c227d195b 100644 --- a/apps/openmw/mwworld/worldimp.hpp +++ b/apps/openmw/mwworld/worldimp.hpp @@ -189,6 +189,9 @@ namespace MWWorld MWWorld::ConstPtr getClosestMarkerFromExteriorPosition(const osg::Vec3f& worldPos, std::string_view id); public: + Cells& getWorldModel() { return mCells; } + Scene& getWorldScene() { return *mWorldScene; } + // FIXME void addContainerScripts(const Ptr& reference, CellStore* cell) override; void removeContainerScripts(const Ptr& reference) override;