#include "landmanager.hpp" #include #include #include #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" #include "../mwworld/esmstore.hpp" namespace MWRender { LandManager::LandManager(int loadFlags) : ResourceManager(NULL) , mLoadFlags(loadFlags) { } osg::ref_ptr LandManager::getLand(int x, int y) { std::ostringstream id; id << x << " " << y; std::string idstr = id.str(); osg::ref_ptr obj = mCache->getRefFromObjectCache(idstr); if (obj) return static_cast(obj.get()); else { const ESM::Land* land = MWBase::Environment::get().getWorld()->getStore().get().search(x,y); if (!land) return NULL; osg::ref_ptr landObj (new ESMTerrain::LandObject(land, mLoadFlags)); mCache->addEntryToObjectCache(idstr, landObj.get()); return landObj; } } void LandManager::reportStats(unsigned int frameNumber, osg::Stats *stats) const { stats->setAttribute(frameNumber, "Land", mCache->getCacheSize()); } }