From 7227973e2fc493f82e1477ba82e3e8aa956b23ef Mon Sep 17 00:00:00 2001 From: James Turner Date: Wed, 8 Sep 2010 11:01:26 +0100 Subject: [PATCH] Don't expect an 'Aircraft' sub-directory within each aircraft-dir. --- src/Main/globals.cxx | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Main/globals.cxx b/src/Main/globals.cxx index c84870dde..0bd14a3bc 100644 --- a/src/Main/globals.cxx +++ b/src/Main/globals.cxx @@ -72,6 +72,7 @@ public: return SGPath(); // not an Aircraft path } + // test against the aircraft-dir property const char* aircraftDir = fgGetString("/sim/aircraft-dir"); string_list aircraftDirPieces(sgPathBranchSplit(aircraftDir)); if (aircraftDirPieces.empty() || (aircraftDirPieces.back() != pieces[1])) { @@ -83,7 +84,24 @@ public: r.append(pieces[i]); } - return r.exists() ? r : SGPath(); + if (r.exists()) { + SG_LOG(SG_IO, SG_INFO, "found path:" << aResource << " via /sim/aircraft-dir: " << r.str()); + return r; + } + + // try each aircaft dir in turn + std::string res(aResource, 9); // resource path with 'Aircraft/' removed + const string_list& dirs(globals->get_aircraft_paths()); + string_list::const_iterator it = dirs.begin(); + for (; it != dirs.end(); ++it) { + SGPath p(*it, res); + if (p.exists()) { + SG_LOG(SG_IO, SG_INFO, "found path:" << aResource << " in aircraft dir: " << r.str()); + return p; + } + } // of aircraft path iteration + + return SGPath(); // not found } }; @@ -276,9 +294,6 @@ void FGGlobals::append_aircraft_path(const std::string& path) unsigned int index = fg_aircraft_dirs.size(); fg_aircraft_dirs.push_back(path); - simgear::ResourceManager::instance()->addBasePath(path, - simgear::ResourceManager::PRIORITY_NORMAL); - // make aircraft dirs available to Nasal SGPropertyNode* sim = fgGetNode("/sim", true); sim->removeChild("fg-aircraft", index, false); -- 2.39.5