From 520f593d5136af305eebb082ff7bd9b3fc4e655f Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Sun, 28 Aug 2016 02:18:38 +0100 Subject: [PATCH] refs #747 It must be possible to load CSL models from a user-supplied directory. --- .../simulation/xplane/aircraftmodelloaderxplane.cpp | 3 ++- src/blackmisc/simulation/xplane/xplaneutil.cpp | 11 +++++++++-- src/blackmisc/simulation/xplane/xplaneutil.h | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp index ba2f4af90..abbf08b24 100644 --- a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp +++ b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp @@ -138,7 +138,8 @@ namespace BlackMisc CAircraftModelList CAircraftModelLoaderXPlane::performParsing(const QString &rootDirectory, const QStringList &excludeDirectories) { CAircraftModelList allModels; - allModels.push_back(parseCslPackages(CXPlaneUtil::xbusLegacyDir(), excludeDirectories)); + allModels.push_back(parseCslPackages(CXPlaneUtil::xbusLegacyDir(rootDirectory), excludeDirectories)); + allModels.push_back(parseCslPackages(rootDirectory, excludeDirectories)); allModels.push_back(parseFlyableAirplanes(rootDirectory, excludeDirectories)); return allModels; } diff --git a/src/blackmisc/simulation/xplane/xplaneutil.cpp b/src/blackmisc/simulation/xplane/xplaneutil.cpp index 3cddd83e5..f358f90e2 100644 --- a/src/blackmisc/simulation/xplane/xplaneutil.cpp +++ b/src/blackmisc/simulation/xplane/xplaneutil.cpp @@ -113,10 +113,18 @@ namespace BlackMisc return QStringList(); } - QString CXPlaneUtil::xbusLegacyDir() + QString CXPlaneUtil::xbusLegacyDir(const QString &rootDir) { QString legacyPath("/Resources/plugins/xbus/LegacyData"); // Return the first non empty path, we can find. + if (!rootDir.isEmpty()) + { + QString xbusLegacy = rootDir + legacyPath; + if (QDir(xbusLegacy).exists()) + { + return xbusLegacy; + } + } if (!xplane10Dir().isEmpty()) { QString xbusLegacy = xplane10Dir() + legacyPath; @@ -125,7 +133,6 @@ namespace BlackMisc return xbusLegacy; } } - if (!xplane9Dir().isEmpty()) { QString xbusLegacy = xplane9Dir() + legacyPath; diff --git a/src/blackmisc/simulation/xplane/xplaneutil.h b/src/blackmisc/simulation/xplane/xplaneutil.h index cff4066a4..76d9aa030 100644 --- a/src/blackmisc/simulation/xplane/xplaneutil.h +++ b/src/blackmisc/simulation/xplane/xplaneutil.h @@ -48,7 +48,7 @@ namespace BlackMisc static QStringList xplaneModelExcludeDirectoryPatterns(); //! XBus legacy directory - static QString xbusLegacyDir(); + static QString xbusLegacyDir(const QString &rootDir); }; } // namespace } // namespace