]> git.mxchange.org Git - flightgear.git/commitdiff
Search aircraft dirs when loading AI models. Thanks to Thorsten Brehm for the catch.
authorJames Turner <zakalawe@mac.com>
Tue, 19 Oct 2010 23:07:54 +0000 (00:07 +0100)
committerJames Turner <zakalawe@mac.com>
Tue, 19 Oct 2010 23:07:54 +0000 (00:07 +0100)
src/AIModel/AIBase.cxx

index 8a073eb6d3b4c8448471d522122d810c5acd6232..514c6abb0498ad77eb133497fd2838e8c521948b 100644 (file)
@@ -194,18 +194,27 @@ void FGAIBase::Transform() {
 }
 
 bool FGAIBase::init(bool search_in_AI_path) {
-    osg::ref_ptr<osgDB::ReaderWriter::Options> opt=
-        new osgDB::ReaderWriter::Options(*osgDB::Registry::instance()->getOptions());
-
+    
+    string f;
     if(search_in_AI_path)
     {
-        SGPath ai_path(globals->get_fg_root());
-        ai_path.append("AI");
-        opt->getDatabasePathList().push_front(ai_path.str());
+    // setup a modified Options strucutre, with only the $fg-root/AI defined;
+    // we'll check that first, then give the normal search logic a chance.
+    // this ensures that models in AI/ are preferred to normal models, where
+    // both exist.
+        osg::ref_ptr<osgDB::ReaderWriter::Options> 
+          opt(osg::clone(osgDB::Registry::instance()->getOptions(), osg::CopyOp::SHALLOW_COPY));
+
+        SGPath ai_path(globals->get_fg_root(), "AI");
+        opt->setDatabasePath(ai_path.str());
+        
+        f = osgDB::findDataFile(model_path, opt.get());
     }
 
-    string f = osgDB::findDataFile(model_path, opt.get());
-
+    if (f.empty()) {
+      f = simgear::SGModelLib::findDataFile(model_path);
+    }
+    
     if(f.empty())
         f = fgGetString("/sim/multiplay/default-model", default_model);