Add preloading settings

coverity_scan
scrawl 9 years ago
parent 610257cd3a
commit 5efaa9817c

@ -193,11 +193,14 @@ namespace MWWorld
void Scene::update (float duration, bool paused)
{
mPreloadTimer += duration;
if (mPreloadTimer > 0.5f)
if (mPreloadEnabled)
{
preloadCells();
mPreloadTimer = 0.f;
mPreloadTimer += duration;
if (mPreloadTimer > 0.5f)
{
preloadCells();
mPreloadTimer = 0.f;
}
}
mRendering.update (duration, paused);
@ -448,7 +451,8 @@ namespace MWWorld
, mPreloadTimer(0.f)
, mHalfGridSize(Settings::Manager::getInt("exterior cell load distance", "Cells"))
, mCellLoadingThreshold(1024.f)
, mPreloadDistance(1000.f)
, mPreloadDistance(Settings::Manager::getInt("preload distance", "Cells"))
, mPreloadEnabled(Settings::Manager::getBool("preload enabled", "Cells"))
{
mPreloader.reset(new CellPreloader(rendering.getResourceSystem(), physics->getShapeManager()));
}
@ -700,8 +704,6 @@ namespace MWWorld
float dist = std::max(std::abs(thisCellCenterX - playerPos.x()), std::abs(thisCellCenterY - playerPos.y()));
float loadDist = 8192/2 + 8192 - mCellLoadingThreshold + mPreloadDistance;
std::cout << cellX+dx << " " << cellY+dy << " dist " << dist << " need " << loadDist << std::endl;
if (dist < loadDist)
mPreloader->preload(MWBase::Environment::get().getWorld()->getExterior(cellX+dx, cellY+dy), mRendering.getReferenceTime());
}

@ -62,6 +62,7 @@ namespace MWWorld
int mHalfGridSize;
float mCellLoadingThreshold;
float mPreloadDistance;
bool mPreloadEnabled;
void insertCell (CellStore &cell, bool rescale, Loading::Listener* loadingListener);

@ -37,6 +37,12 @@ first person field of view = 55.0
# dramatically affect performance, see documentation for details.
exterior cell load distance = 1
# Preload cells in a background thread
preload enabled = true
# Preloading distance threshold
preload distance = 1000
[Map]
# Size of each exterior cell in pixels in the world map. (e.g. 12 to 24).

Loading…
Cancel
Save