]> git.mxchange.org Git - flightgear.git/commitdiff
Move all tile-manager init to reinit path.
authorJames Turner <zakalawe@mac.com>
Wed, 22 Oct 2014 20:05:01 +0000 (21:05 +0100)
committerJames Turner <zakalawe@mac.com>
Tue, 11 Nov 2014 22:25:55 +0000 (22:25 +0000)
- improves changing scenery paths at runtime.

src/Scenery/tilemgr.cxx

index c2e635acd26595af480e2455a1dfedf578c7c4ef..96a10fd19e03bdec936ac4141b1067adaff64ab3 100644 (file)
@@ -137,35 +137,37 @@ FGTileMgr::~FGTileMgr()
 
 
 // Initialize the Tile Manager subsystem
-void FGTileMgr::init() {
+void FGTileMgr::init()
+{
+    reinit();
+}
+
+void FGTileMgr::reinit()
+{
     SG_LOG( SG_TERRAIN, SG_INFO, "Initializing Tile Manager subsystem." );
+    _terra_sync = static_cast<simgear::SGTerraSync*> (globals->get_subsystem("terrasync"));
 
+  // drops the previous options reference
     _options = new simgear::SGReaderWriterOptions;
     _listener = new TileManagerListener(this);
     
     materialLibChanged();
     _options->setPropertyNode(globals->get_props());
-
+    
     osgDB::FilePathList &fp = _options->getDatabasePathList();
     const string_list &sc = globals->get_fg_scenery();
     fp.clear();
     std::copy(sc.begin(), sc.end(), back_inserter(fp));
     _options->setPluginStringData("SimGear::FG_ROOT", globals->get_fg_root());
     
-    if (globals->get_subsystem("terrasync")) {
-        _options->setPluginStringData("SimGear::TERRASYNC_ROOT", fgGetString("/sim/terrasync/scenery-dir"));
+    if (_terra_sync) {
+      _options->setPluginStringData("SimGear::TERRASYNC_ROOT", fgGetString("/sim/terrasync/scenery-dir"));
     }
     
     if (!_disableNasalHooks->getBoolValue())
-        _options->setModelData(new FGNasalModelDataProxy);
-
-    reinit();
-}
-
-void FGTileMgr::reinit()
-{
-    _terra_sync = static_cast<simgear::SGTerraSync*> (globals->get_subsystem("terrasync"));
-    
+      _options->setModelData(new FGNasalModelDataProxy);
+  
+  
     // protect against multiple scenery reloads and properly reset flags,
     // otherwise aircraft fall through the ground while reloading scenery
     if (!fgGetBool("/sim/sceneryloaded",true))