X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScenery%2Ftilemgr.cxx;h=54fe7988e30c78dc08d93038d9fbd4f59b94857b;hb=070dba29f9390806457206c2660f2daebd3d847c;hp=1d4bd40adb2a8feb5a929b76562a1f5643ea3d26;hpb=04736077318cf3ef7dc5a4af40d00f86f2b430b7;p=flightgear.git diff --git a/src/Scenery/tilemgr.cxx b/src/Scenery/tilemgr.cxx index 1d4bd40ad..54fe7988e 100644 --- a/src/Scenery/tilemgr.cxx +++ b/src/Scenery/tilemgr.cxx @@ -53,12 +53,37 @@ using flightgear::SceneryPager; +class FGTileMgr::TileManagerListener : public SGPropertyChangeListener +{ +public: + TileManagerListener(FGTileMgr* manager) : + _manager(manager) + { + fgGetNode("/sim/rendering/use-vbos", true)->addChangeListener(this, true); + } + + ~TileManagerListener() + { + fgGetNode("/sim/rendering/use-vbos")->removeChangeListener(this); + } + + virtual void valueChanged(SGPropertyNode* prop) + { + bool useVBOs = prop->getBoolValue(); + _manager->_options->setPluginStringData("SimGear::USE_VBOS", + useVBOs ? "ON" : "OFF"); + } + +private: + FGTileMgr* _manager; +}; FGTileMgr::FGTileMgr(): state( Start ), last_state( Running ), scheduled_visibility(100.0), _terra_sync(NULL), + _listener(NULL), _visibilityMeters(fgGetNode("/environment/visibility-m", true)), _maxTileRangeM(fgGetNode("/sim/rendering/static-lod/bare", true)), _disableNasalHooks(fgGetNode("/sim/temp/disable-scenery-nasal", true)), @@ -71,6 +96,8 @@ FGTileMgr::FGTileMgr(): FGTileMgr::~FGTileMgr() { + delete _listener; + // remove all nodes we might have left behind osg::Group* group = globals->get_scenery()->get_terrain_branch(); group->removeChildren(0, group->getNumChildren()); @@ -84,6 +111,7 @@ void FGTileMgr::init() { SG_LOG( SG_TERRAIN, SG_INFO, "Initializing Tile Manager subsystem." ); _options = new simgear::SGReaderWriterOptions; + _listener = new TileManagerListener(this); materialLibChanged(); _options->setPropertyNode(globals->get_props());