]> git.mxchange.org Git - flightgear.git/commitdiff
Tweaks to fg-aircraft handling.
authorJames Turner <zakalawe@mac.com>
Wed, 15 Jan 2014 17:10:12 +0000 (17:10 +0000)
committerJames Turner <zakalawe@mac.com>
Wed, 15 Jan 2014 17:10:12 +0000 (17:10 +0000)
Warn (but do not require, since people would probably complain) when
added paths do not contain an Aircraft subdir. When people specify
a path which ends in /Aircraft, use the parent directory.

src/Main/AircraftDirVisitorBase.hxx
src/Main/globals.cxx

index cb216c79748319d622b3e26adbb921a9acfcf27d..1096a788d3adb5c3e2f701be439957c7d8cd3c38 100644 (file)
@@ -46,7 +46,16 @@ protected:
         const string_list& paths(globals->get_aircraft_paths());
         string_list::const_iterator it = paths.begin();
         for (; it != paths.end(); ++it) {
-            VisitResult vr = visitDir(simgear::Dir(*it), 0);
+            SGPath p(*it);
+        // additional aircraft-paths are supposed to specify the directory
+        // containing the 'Aircraft' dir (same structure as fg-root, so cross-
+        // aircraft resource paths can be resolved correctly). Some users omit
+        // this, so check for both.
+            p.append("Aircraft");
+            if (!p.exists())
+                p = SGPath(*it);
+            
+            VisitResult vr = visitDir(p, 0);
             if (vr != VISIT_CONTINUE) {
                 return vr;
             }
index 3f469d05a2df3476a6888345bd555287750fd258..d0a3d102e9ca4644590ecf0af21eeb8dd5a0f4d0 100644 (file)
@@ -401,9 +401,23 @@ void FGGlobals::append_aircraft_path(const std::string& path)
 {
   SGPath dirPath(path);
   if (!dirPath.exists()) {
-    SG_LOG(SG_GENERAL, SG_WARN, "aircraft path not found:" << path);
+    SG_LOG(SG_GENERAL, SG_ALERT, "aircraft path not found:" << path);
     return;
   }
+    
+  SGPath acSubdir(dirPath);
+  acSubdir.append("Aircraft");
+  if (!acSubdir.exists()) {
+      if (dirPath.file() == "Aircraft") {
+          dirPath = dirPath.dir();
+          SG_LOG(SG_GENERAL, SG_WARN, "Specified an aircraft-dir path ending in 'Aircraft':" << path
+                 << ", will instead use parent directory:" << dirPath);
+      } else {
+          SG_LOG(SG_GENERAL, SG_ALERT, "Aircraft-dir path '" << path <<
+             "' does not contain an 'Aircraft' subdirectory, cross-aircraft paths will not resolve correctly.");
+      }
+  }
+    
   std::string abspath = dirPath.realpath();
   
   unsigned int index = fg_aircraft_dirs.size();