1
0
Fork 0
No description
Find a file
Florent Rougon 670cf9a894 Initial support for NavData/<type>/*.dat[.gz] files in scenery paths
Load every file matching the pattern NavData/apt/*.dat[.gz] inside each
scenery path. These files are loaded in the same order as the components
of globals->get_unmangled_fg_scenery() they reside in. Inside a given
component, the order is determined by pathSortPredicate() in
simgear/misc/sg_dir.cxx (lexicographic order at the time of this
writing). For compatibility with existing scenery,
$FG_ROOT/Airports/apt.dat.gz is also loaded last.

The idea is that such files will have the same precedence order as the
globals->get_unmangled_fg_scenery() scenery components they come from.
This commit doesn't handle this fully yet, though: it blindly loads all
these files. A future commit will ensure that no airport is loaded twice
due to overlapping apt.dat files. This commit however handles all the
logic of navdata cache rebuilding when the list, the order of apt.dat
files, or any of their timestamps changes.

Although only apt.dat files receive a new treatment in this commit, the
changes to NavDataCache.[ch]xx are already generic so that extension of
this method to fix.dat, nav.dat, etc. will require almost no change to
NavDataCache.[ch]xx (however, changes will probably be needed in the
various loaders: in fixlist.[ch]xx, navdb.[ch]xx, etc.).

src/Navaids/CacheSchema.h:

  - increment the SCHEMA_VERSION by 1. This ensures among others that if
    someone uses a FlightGear version posterior to this change with
    new-style scenery (having NavData/apt/*.dat[.gz] files inside
    scenery paths), then goes back to a FlightGear version anterior to
    this change, his NavCache is rebuilt ignoring the in-scenery-paths
    NavData/apt/*.dat[.gz] files, as expected with the old FlightGear
    version.

src/Navaids/NavDataCache.cxx:

  - NavDataCachePrivate: replace aptDatPath (SGPath) with aptDatPaths
    (PathList).

  - NavDataCachePrivate::getDatFilesPaths(): new method that returns the
    list of $scenery_path/NavData/<type>/*.dat[.gz] files found inside
    scenery paths (where <type> is one of 'apt', 'fix', etc.), plus the
    historical file (e.g., $FG_ROOT/Airports/apt.dat.gz for the 'apt'
    type).

  - NavDataCachePrivate::areDatFilesModified(): new method that tells
    whether any of these files (for a given type) has changed since the
    last NavCache rebuild, or if their ordered list has changed.

  - NavDataCachePrivate::isCachedFileModified(): minor changes.

  - NavDataCache::updateListsOfDatFiles(): new method that updates the
    lists of dat files used for NavCache freshness checking and
    rebuilding, i.e. currently sets/updates d->aptDatPaths using the new
    method d->getDatFilesPaths(), and d->metarDatPath, d->navDatPath,
    d->fixDatPath, d->poiDatPath, etc. as usual. This method will be
    useful for instance in the built-in launcher after updating scenery
    paths and before calling NavDataCache::isRebuildRequired().

  - NavDataCache::NavDataCache(): use
    NavDataCache::updateListsOfDatFiles() to initialize d->aptDatPaths,
    d->metarDatPath, d->navDatPath, d->fixDatPath, d->poiDatPath, etc.

  - NavDataCache::isRebuildRequired(): use
    NavDataCachePrivate::areDatFilesModified() instead of just checking
    $FG_ROOT/Airports/apt.dat.gz.

  - NavDataCache::doRebuild(): load all apt.dat files listed in
    d->aptDatPaths, instead of only $FG_ROOT/Airports/apt.dat.gz. Write
    their ordered list and timestamps in the NavCache.

src/Navaids/NavDataCache.hxx:

  - declare the new method NavDataCache::updateListsOfDatFiles().

  - NavDataCache::DatFileType: new enum with values DATFILETYPE_APT,
    DATFILETYPE_METAR, DATFILETYPE_AWY, DATFILETYPE_NAV,
    DATFILETYPE_FIX, DATFILETYPE_POI, DATFILETYPE_CARRIER and
    DATFILETYPE_TACAN_FREQ. Maybe some of the corresponding files won't
    have to be moved to scenery paths, but simply listing them in the
    enum doesn't change how they are dealt with. Those for which
    per-scenery-path locations doesn't make sense can just be removed
    from the enum.

  - NavDataCache::datTypeStr: new static string_list giving an
    std::string such as 'apt' for each value of the
    NavDataCache::DatFileType enum.

  - NavDataCache::defaultDatFile: new static string_list giving a path
    (relative to $FG_ROOT) to the historical/default file for each value
    of the NavDataCache::DatFileType enum.

src/Airports/apt_loader.cxx and src/Airports/apt_loader.hxx:

  - always include a path to the apt.dat file being processed in log
    messages, since they can now apply to many files;

  - be clearer about code 99: it should normally be at the end of
    apt.dat files, but technically, it is not an EOF;

  - use the expression "row code" consistently with the apt.dat format
    spec (for now: only in places where there is another change to do).

src/GUI/QtLauncher.cxx and src/GUI/QtLauncher_private.hxx:

  - turn QtLauncher::setSceneryPaths() into a static method and call it
    in runLauncherDialog() before instantiating NavDataCache, so that
    NavDataCache::updateListsOfDatFiles() (called from NavDataCache's
    constructor) can see all configured scenery paths.
2016-10-17 12:10:03 +01:00
3rdparty VS2015 compatability fixes. 2016-06-01 22:58:03 +01:00
CMakeModules Fix the header location 2016-08-06 11:27:22 +02:00
docs-mini Bugfix: remove the (totally broken) skyblend option 2013-12-19 14:53:39 +00:00
examples/netfdm Add an example implementation for the NetFDM structure. 2004-04-27 08:55:04 +00:00
icons Force 32 bits depth on .ico - only for Windows 2013-11-14 21:24:56 +01:00
man Remove unused --control option 2014-06-19 14:28:14 +02:00
package Correct version numbers for start menu entries 2015-08-04 10:25:47 +02:00
scripts Fix the root cause for terrasync.py timeouts 2016-06-06 12:17:12 +02:00
src Initial support for NavData/<type>/*.dat[.gz] files in scenery paths 2016-10-17 12:10:03 +01:00
tests KIll off ALUT now it's gone from SimGear 2012-08-22 00:10:00 +01:00
utils Replace the NOAA METAR URL with the new, updated one 2016-08-04 20:34:34 +02:00
.gitignore Add dot-files to gitignore. 2012-07-17 19:19:55 +02:00
AUTHORS Fix my mailing address by replacing it with my web page. 2004-11-19 22:10:41 +00:00
ChangeLog Updated ... 2001-06-18 22:25:59 +00:00
CMakeLists.txt Rewrite Mac Event-Input code 2016-09-28 21:16:24 -05:00
COPYING Fix minor compiler and checker warnings. 2011-12-19 21:35:50 +01:00
INSTALL Add INSTALL file, split MSVC instructions from README.cmake 2012-06-08 13:20:39 +02:00
NEWS Update the NEWS file to reflect v2.0.0 changes. 2010-02-25 23:22:47 +01:00
README README typo 2007-07-24 05:35:31 +00:00
README.cmake Use CMAKE_INSTALL_BINDIR 2016-07-09 18:52:58 -04:00
README.msvc Add INSTALL file, split MSVC instructions from README.cmake 2012-06-08 13:20:39 +02:00
README.OpenAL KIll off ALUT now it's gone from SimGear 2012-08-22 00:10:00 +01:00
README.OSG Update README.OSG 2012-06-26 23:04:44 +02:00
README.plib Minor documentation update. 2007-11-18 14:22:40 +00:00
README.SimGear Documentation fixes: Updated the contents of README.plib and README.OpenAL. 2007-09-01 10:06:56 +00:00
Thanks Old address abandoned. 2015-08-26 08:05:30 -07:00
version new version: 2016.4.0 2016-09-06 12:51:04 +02:00

Welcome to the FlightGear Flight Simulator project.
===================================================

The primary web page for this project is: http://www.flightgear.org

For basic installation instructions see the "INSTALL" file.

Before you can run FlightGear you will also need to download and
install the "base" package which is a collection of textures, sounds,
sample scenery, and other data files needed by the sim.

For additional install help for specific platforms please browse the
"docs-mini/" subdirectory.

More complete documentation is available from our web page as a
separate distribution.

Please take a look at the "Thanks" file for a list of people who have
contributed to this project.  If you have contributed something but
don't find your name in this file.  Please send a polite reminder to
http://www.flightgear.org/~curt

For a summary of changes/additions by version see the "NEWS" file.

This project is GPL'd.  For complete details on our licensing please
see the "COPYING" file.

For information on available mailing lists, mailing list archives, and
other available source code and documenation, please visit our web
site.

FlightGear is a product of the collaboration of large international
group of volunteers.  FlightGear is a work in progress.  FlightGear
comes with no warrantee.  We hope you enjoy FlightGear and/or find it
of some value!