From 1d8a9ff62243cb6b8e218840d839e6d554f3e8d9 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 9 Feb 2017 03:47:36 +0100 Subject: [PATCH] Preload player cell as soon as the player is read from the savegame Giving the worker thread something to do while the rest of the savegame is parsed. --- apps/openmw/mwworld/scene.hpp | 4 ++-- apps/openmw/mwworld/worldimp.cpp | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwworld/scene.hpp b/apps/openmw/mwworld/scene.hpp index 970a4cad3..b8cbf49b9 100644 --- a/apps/openmw/mwworld/scene.hpp +++ b/apps/openmw/mwworld/scene.hpp @@ -82,14 +82,14 @@ namespace MWWorld void preloadExteriorGrid(const osg::Vec3f& playerPos, const osg::Vec3f& predictedPos); void preloadFastTravelDestinations(const osg::Vec3f& playerPos, const osg::Vec3f& predictedPos); - void preloadCell(MWWorld::CellStore* cell, bool preloadSurrounding=false); - public: Scene (MWRender::RenderingManager& rendering, MWPhysics::PhysicsSystem *physics); ~Scene(); + void preloadCell(MWWorld::CellStore* cell, bool preloadSurrounding=false); + void unloadCell (CellStoreCollection::iterator iter); void loadCell (CellStore *cell, Loading::Listener* loadingListener, bool respawn); diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index f3d44db39..6468c9b66 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -374,10 +374,13 @@ namespace MWWorld reader.getHNT(mTeleportEnabled, "TELE"); reader.getHNT(mLevitationEnabled, "LEVT"); return; + case ESM::REC_PLAY: + mPlayer->readRecord(reader, type); + mWorldScene->preloadCell(getPlayerPtr().getCell(), true); + break; default: if (!mStore.readRecord (reader, type) && !mGlobalVariables.readRecord (reader, type) && - !mPlayer->readRecord (reader, type) && !mWeatherManager->readRecord (reader, type) && !mCells.readRecord (reader, type, contentFileMap) && !mProjectileManager->readRecord (reader, type)