]> git.mxchange.org Git - flightgear.git/commitdiff
Tune osgDB::MaxPagedLODs parameter
authorJames Turner <zakalawe@mac.com>
Sat, 17 May 2014 08:05:25 +0000 (09:05 +0100)
committerJames Turner <zakalawe@mac.com>
Sat, 17 May 2014 08:05:34 +0000 (09:05 +0100)
src/Scenery/tilemgr.cxx

index fa8c530b5052b1c4d068136ed93357474ee43240..daa664d8dedd6ad27c92a9d389a6ebed66d7a222 100644 (file)
@@ -59,16 +59,30 @@ public:
     TileManagerListener(FGTileMgr* manager) :
         _manager(manager),
         _useVBOsProp(fgGetNode("/sim/rendering/use-vbos", true)),
-        _enableCacheProp(fgGetNode("/sim/tile-cache/enable", true))
+        _enableCacheProp(fgGetNode("/sim/tile-cache/enable", true)),
+        _pagedLODMaximumProp(fgGetNode("/sim/rendering/max-paged-lod", true))
     {
         _useVBOsProp->addChangeListener(this, true);
+      
         _enableCacheProp->addChangeListener(this, true);
+        if (_enableCacheProp->getType() == simgear::props::NONE) {
+            _enableCacheProp->setBoolValue(true);
+        }
+      
+        if (_pagedLODMaximumProp->getType() == simgear::props::NONE) {
+            // not set, use OSG default / environment value variable
+            osg::ref_ptr<osgViewer::Viewer> viewer(globals->get_renderer()->getViewer());
+            int current = viewer->getDatabasePager()->getTargetMaximumNumberOfPageLOD();
+            _pagedLODMaximumProp->setIntValue(current);
+        }
+        _pagedLODMaximumProp->addChangeListener(this, true);
     }
     
     ~TileManagerListener()
     {
         _useVBOsProp->removeChangeListener(this);
         _enableCacheProp->removeChangeListener(this);
+        _pagedLODMaximumProp->removeChangeListener(this);
     }
     
     virtual void valueChanged(SGPropertyNode* prop)
@@ -79,13 +93,18 @@ public:
                                                 useVBOs ? "ON" : "OFF");
         } else if (prop == _enableCacheProp) {
             _manager->_enableCache = prop->getBoolValue();
+        } else if (prop == _pagedLODMaximumProp) {
+          int v = prop->getIntValue();
+          osg::ref_ptr<osgViewer::Viewer> viewer(globals->get_renderer()->getViewer());
+          viewer->getDatabasePager()->setTargetMaximumNumberOfPageLOD(v);
         }
     }
     
 private:
     FGTileMgr* _manager;
     SGPropertyNode_ptr _useVBOsProp,
-      _enableCacheProp;
+      _enableCacheProp,
+      _pagedLODMaximumProp;
 };
 
 FGTileMgr::FGTileMgr():
@@ -356,7 +375,7 @@ void FGTileMgr::update_queues(bool& isDownloadingScenery)
         {
             // schedule tile for deletion with osg pager
             TileEntry* old = tile_cache.get_tile(drop_index);
-            SG_LOG(SG_TERRAIN, SG_ALERT, "Dropping:" << old->get_tile_bucket());
+            SG_LOG(SG_TERRAIN, SG_DEBUG, "Dropping:" << old->get_tile_bucket());
 
             tile_cache.clear_entry(drop_index);