diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index b526d8e0d4..b86923a1d3 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -339,7 +339,7 @@ void OMW::Engine::go() mEnvironment.setWindowManager (new MWGui::WindowManager( mExtensions, mFpsLevel, mNewGame, mOgre, mCfgMgr.getLogPath().string() + std::string("/"), - mScriptConsoleMode)); + mCfgMgr.getCachePath ().string(), mScriptConsoleMode)); // Create sound system mEnvironment.setSoundManager (new MWSound::SoundManager(mUseSound)); @@ -369,7 +369,6 @@ void OMW::Engine::go() pos.pos[2] = 0; mEnvironment.getWorld()->renderPlayer(); - mEnvironment.getWorld()->renderGlobalMap(); if (const ESM::Cell *exterior = MWBase::Environment::get().getWorld()->getExterior (mCellName)) { diff --git a/apps/openmw/mwbase/world.hpp b/apps/openmw/mwbase/world.hpp index ee474f3570..521bbb988e 100644 --- a/apps/openmw/mwbase/world.hpp +++ b/apps/openmw/mwbase/world.hpp @@ -282,7 +282,6 @@ namespace MWBase virtual void togglePlayerLooking(bool enable) = 0; virtual void renderPlayer() = 0; - virtual void renderGlobalMap() = 0; virtual void setupExternalRendering (MWRender::ExternalRendering& rendering) = 0; diff --git a/apps/openmw/mwgui/map_window.cpp b/apps/openmw/mwgui/map_window.cpp index ea7b442593..f4a387be48 100644 --- a/apps/openmw/mwgui/map_window.cpp +++ b/apps/openmw/mwgui/map_window.cpp @@ -11,6 +11,8 @@ #include "../mwbase/environment.hpp" #include "../mwworld/player.hpp" +#include "../mwrender/globalmap.hpp" + using namespace MWGui; LocalMapBase::LocalMapBase() @@ -249,12 +251,14 @@ void LocalMapBase::setPlayerDir(const float x, const float y) // ------------------------------------------------------------------------------------------ -MapWindow::MapWindow(MWBase::WindowManager& parWindowManager) : - MWGui::WindowPinnableBase("openmw_map_window.layout", parWindowManager), - mGlobal(false) +MapWindow::MapWindow(MWBase::WindowManager& parWindowManager, const std::string& cacheDir) + : MWGui::WindowPinnableBase("openmw_map_window.layout", parWindowManager) + , mGlobal(false) { setCoord(500,0,320,300); + mGlobalMapRender = new MWRender::GlobalMap(cacheDir); + getWidget(mLocalMap, "LocalMap"); getWidget(mGlobalMap, "GlobalMap"); getWidget(mGlobalMapImage, "GlobalMapImage"); @@ -277,6 +281,11 @@ MapWindow::MapWindow(MWBase::WindowManager& parWindowManager) : LocalMapBase::init(mLocalMap, mPlayerArrowLocal, this); } +MapWindow::~MapWindow() +{ + delete mGlobalMapRender; +} + void MapWindow::setCellName(const std::string& cellName) { setTitle(cellName); diff --git a/apps/openmw/mwgui/map_window.hpp b/apps/openmw/mwgui/map_window.hpp index a8b5b9cb90..a094d18625 100644 --- a/apps/openmw/mwgui/map_window.hpp +++ b/apps/openmw/mwgui/map_window.hpp @@ -3,6 +3,11 @@ #include "window_pinnable_base.hpp" +namespace MWRender +{ + class GlobalMap; +} + namespace MWGui { class LocalMapBase @@ -57,8 +62,8 @@ namespace MWGui class MapWindow : public MWGui::WindowPinnableBase, public LocalMapBase { public: - MapWindow(MWBase::WindowManager& parWindowManager); - virtual ~MapWindow(){} + MapWindow(MWBase::WindowManager& parWindowManager, const std::string& cacheDir); + virtual ~MapWindow(); void setCellName(const std::string& cellName); @@ -82,6 +87,8 @@ namespace MWGui MyGUI::Button* mEventBoxGlobal; MyGUI::Button* mEventBoxLocal; + MWRender::GlobalMap* mGlobalMapRender; + protected: virtual void onPinToggled(); }; diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp index c8e56f2c73..e6f9e8565b 100644 --- a/apps/openmw/mwgui/windowmanagerimp.cpp +++ b/apps/openmw/mwgui/windowmanagerimp.cpp @@ -50,7 +50,8 @@ using namespace MWGui; WindowManager::WindowManager( - const Compiler::Extensions& extensions, int fpsLevel, bool newGame, OEngine::Render::OgreRenderer *mOgre, const std::string& logpath, bool consoleOnlyScripts) + const Compiler::Extensions& extensions, int fpsLevel, bool newGame, OEngine::Render::OgreRenderer *mOgre, + const std::string& logpath, const std::string& cacheDir, bool consoleOnlyScripts) : mGuiManager(NULL) , mHud(NULL) , mMap(NULL) @@ -132,7 +133,7 @@ WindowManager::WindowManager( mDragAndDrop->mDragAndDropWidget = dragAndDropWidget; mMenu = new MainMenu(w,h); - mMap = new MapWindow(*this); + mMap = new MapWindow(*this, cacheDir); mStatsWindow = new StatsWindow(*this); mConsole = new Console(w,h, consoleOnlyScripts); mJournal = new JournalWindow(*this); diff --git a/apps/openmw/mwgui/windowmanagerimp.hpp b/apps/openmw/mwgui/windowmanagerimp.hpp index 47461f877a..d7773e2619 100644 --- a/apps/openmw/mwgui/windowmanagerimp.hpp +++ b/apps/openmw/mwgui/windowmanagerimp.hpp @@ -71,7 +71,9 @@ namespace MWGui typedef std::pair Faction; typedef std::vector FactionList; - WindowManager(const Compiler::Extensions& extensions, int fpsLevel, bool newGame, OEngine::Render::OgreRenderer *mOgre, const std::string& logpath, bool consoleOnlyScripts); + WindowManager(const Compiler::Extensions& extensions, int fpsLevel, bool newGame, + OEngine::Render::OgreRenderer *mOgre, const std::string& logpath, + const std::string& cacheDir, bool consoleOnlyScripts); virtual ~WindowManager(); /** diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 3f1bf68262..e0d19f8bd2 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -164,8 +164,6 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const mDebugging = new Debugging(mMwRoot, engine); mLocalMap = new MWRender::LocalMap(&mRendering, this); - mGlobalMap = new GlobalMap(cacheDir.string()); - setMenuTransparency(Settings::Manager::getFloat("menu transparency", "GUI")); } @@ -182,7 +180,6 @@ RenderingManager::~RenderingManager () delete mOcclusionQuery; delete mCompositors; delete mWater; - delete mGlobalMap; } MWRender::SkyManager* RenderingManager::getSkyManager() @@ -901,9 +898,4 @@ void RenderingManager::setupExternalRendering (MWRender::ExternalRendering& rend rendering.setup (mRendering.getScene()); } -void RenderingManager::renderGlobalMap () -{ - mGlobalMap->render (); -} - } // namespace diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 24ec8b15b4..359809b71d 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -195,8 +195,6 @@ class RenderingManager: private RenderingInterface, public Ogre::WindowEventList void setupExternalRendering (MWRender::ExternalRendering& rendering); - void renderGlobalMap(); - protected: virtual void windowResized(Ogre::RenderWindow* rw); virtual void windowClosed(Ogre::RenderWindow* rw); diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index d0fbf4bd69..e9b6e6d12c 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -1253,11 +1253,6 @@ namespace MWWorld mRendering->renderPlayer(mPlayer->getPlayer()); } - void World::renderGlobalMap () - { - mRendering->renderGlobalMap (); - } - void World::setupExternalRendering (MWRender::ExternalRendering& rendering) { mRendering->setupExternalRendering (rendering); diff --git a/apps/openmw/mwworld/worldimp.hpp b/apps/openmw/mwworld/worldimp.hpp index 5c57279051..90cd2151b6 100644 --- a/apps/openmw/mwworld/worldimp.hpp +++ b/apps/openmw/mwworld/worldimp.hpp @@ -313,7 +313,6 @@ namespace MWWorld } virtual void renderPlayer(); - virtual void renderGlobalMap(); virtual void setupExternalRendering (MWRender::ExternalRendering& rendering);