Tweaks to fg-aircraft handling.
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.
This commit is contained in:
parent
d8a3f160ef
commit
2b55acd3eb
2 changed files with 25 additions and 2 deletions
|
@ -46,7 +46,16 @@ protected:
|
||||||
const string_list& paths(globals->get_aircraft_paths());
|
const string_list& paths(globals->get_aircraft_paths());
|
||||||
string_list::const_iterator it = paths.begin();
|
string_list::const_iterator it = paths.begin();
|
||||||
for (; it != paths.end(); ++it) {
|
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) {
|
if (vr != VISIT_CONTINUE) {
|
||||||
return vr;
|
return vr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -401,9 +401,23 @@ void FGGlobals::append_aircraft_path(const std::string& path)
|
||||||
{
|
{
|
||||||
SGPath dirPath(path);
|
SGPath dirPath(path);
|
||||||
if (!dirPath.exists()) {
|
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;
|
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();
|
std::string abspath = dirPath.realpath();
|
||||||
|
|
||||||
unsigned int index = fg_aircraft_dirs.size();
|
unsigned int index = fg_aircraft_dirs.size();
|
||||||
|
|
Loading…
Add table
Reference in a new issue