diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index 6be1dbc97..e27c0b585 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -809,6 +809,13 @@ namespace MWWorld mPreloader->preload(cell, mRendering.getReferenceTime()); } + void Scene::preloadTerrain(const osg::Vec3f &pos) + { + std::vector vec; + vec.push_back(pos); + mPreloader->setTerrainPreloadPositions(vec); + } + struct ListFastTravelDestinationsVisitor { ListFastTravelDestinationsVisitor(float preloadDist, const osg::Vec3f& playerPos) diff --git a/apps/openmw/mwworld/scene.hpp b/apps/openmw/mwworld/scene.hpp index 82b8dcaba..f3c2d31ca 100644 --- a/apps/openmw/mwworld/scene.hpp +++ b/apps/openmw/mwworld/scene.hpp @@ -89,6 +89,7 @@ namespace MWWorld ~Scene(); void preloadCell(MWWorld::CellStore* cell, bool preloadSurrounding=false); + void preloadTerrain(const osg::Vec3f& pos); void unloadCell (CellStoreCollection::iterator iter); diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index 9d3110a67..851b02ba8 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -379,6 +379,7 @@ namespace MWWorld case ESM::REC_PLAY: mPlayer->readRecord(reader, type); mWorldScene->preloadCell(getPlayerPtr().getCell(), true); + mWorldScene->preloadTerrain(getPlayerPtr().getRefData().getPosition().asVec3()); break; default: if (!mStore.readRecord (reader, type) &&