]> git.mxchange.org Git - flightgear.git/commitdiff
New feature: Allow the loading of shared models that are not located inside
authordurk <durk>
Sun, 4 Oct 2009 07:59:07 +0000 (07:59 +0000)
committerTim Moore <timoore@redhat.com>
Tue, 6 Oct 2009 05:27:39 +0000 (07:27 +0200)
the base package, but are maintained in the SVN repository of the custom
scenery project.

src/Airports/xmlloader.cxx
src/Scenery/tilemgr.cxx

index 7579e8cc4c4d404d9a0fb10e7b387e38935e10e5..9487144c99817ed42361776b9d4c495d19c368c7 100644 (file)
@@ -34,7 +34,7 @@ XMLLoader::~XMLLoader() {}
 
 void XMLLoader::load(FGAirportDynamics* d) {
   FGAirportDynamicsXMLLoader visitor(d);
-  if (fgGetBool("/sim/traffic-manager/use-custom-scenery-data") == false) {
+  if (fgGetBool("/sim/paths/use-custom-scenery-data") == false) {
    SGPath parkpath( globals->get_fg_root() );
    parkpath.append( "/AI/Airports/" );
    parkpath.append( d->getId() );
@@ -57,7 +57,7 @@ void XMLLoader::load(FGAirportDynamics* d) {
 
 void XMLLoader::load(FGRunwayPreference* p) {
   FGRunwayPreferenceXMLLoader visitor(p);
-  if (fgGetBool("/sim/traffic-manager/use-custom-scenery-data") == false) {
+  if (fgGetBool("/sim/paths/use-custom-scenery-data") == false) {
     SGPath rwyPrefPath( globals->get_fg_root() );
     rwyPrefPath.append( "AI/Airports/" );
     rwyPrefPath.append( p->getId() );
index f44fb8b7c6ac950fb29e845ab4f5bef7d30f9090..a7bbb388bf7bf32802caec5364b072d409b56bd3 100644 (file)
@@ -236,13 +236,27 @@ void FGTileMgr::initialize_queue()
 osg::Node*
 FGTileMgr::loadTileModel(const string& modelPath, bool cacheModel)
 {
+    SGPath fullPath;
+    if (fgGetBool("/sim/paths/use-custom-scenery-data") == true) {
+        string_list sc = globals->get_fg_scenery();
+
+        for (string_list_iterator it = sc.begin(); it != sc.end(); ++it) {
+            SGPath tmpPath(*it);
+            tmpPath.append(modelPath);
+            if (tmpPath.exists()) {
+                fullPath = tmpPath;
+                break;
+            } 
+        }
+    } else {
+         fullPath.append(modelPath);
+    }
     osg::Node* result = 0;
     try {
         if(cacheModel)
             result =
-                SGModelLib::loadModel(modelPath, globals->get_props(),
+                SGModelLib::loadModel(fullPath.str(), globals->get_props(),
                                       new FGNasalModelData);
-
         else
             result=
                 SGModelLib::loadPagedModel(modelPath, globals->get_props(),