1
0
Fork 0
Commit graph

9479 commits

Author SHA1 Message Date
Torsten Dreyer
65b51b8d91 Limit the update rate of the property change websocket
Of fast systems with 60fps sending many properties to web clients
may overrun the rendering capabilities of the browser. At some point
the web socket client halts the simulation by throtteling the network
connection.

Update rate is settable at startup setting to a double value
/sim/http/property-websocket/update-interval-secs
(default: 0.05 aka 20Hz)
2016-10-26 11:02:24 +02:00
James Turner
c628ac7649 Use SGMisc::isNaN instead of isnan()
Fixes a compiler error with C++11/GGC 6.2
2016-10-24 18:40:36 +02:00
James Turner
1286e4157b Save / restore launcher window geometry. 2016-10-24 12:27:49 +01:00
James Turner
0878a1fba8 Launcher: remove spacer above ‘additional options’. 2016-10-24 12:25:12 +01:00
James Turner
ac33092032 Fix crash disabling AI traffic at runtime.
https://sourceforge.net/p/flightgear/codetickets/1848/
2016-10-20 22:52:27 +01:00
James Turner
ad43d52070 Fix message-box crash in non-Qt builds.
Only affects Linux where we have no fallback UI option.

https://sourceforge.net/p/flightgear/codetickets/1900/
2016-10-20 20:27:47 +01:00
James Turner
ce79be323a Fix command line doc URL.
https://sourceforge.net/p/flightgear/codetickets/1906/
2016-10-20 20:27:47 +01:00
Florent Rougon
f4e0bf05f5 Make sure we open exactly the desired file when loading apt.dat files
Without this change, it would be possible that the NavCache is rebuilt
using $FG_ROOT/Airports/apt.dat (if $FG_ROOT/Airports/apt.dat.gz is
manually deleted) despite APTLoader::readAptDatFile() using
sg_gzifstream() with $FG_ROOT/Airports/apt.dat.gz, but the NavCache
would still contain a reference to $FG_ROOT/Airports/apt.dat.gz and log
messages would pretend we are reading this (non-existent) file.

Unrelated: the change

-          "Loaded data for " << nbAirports << " airports" );
+          "Loaded data for " << nbLoadedAirports << " airports" );

has no incidence given the current code, but it is more logical and
future-proof (in case someone adds a continue statement inside the for
loop starting at line 224...).
2016-10-20 16:55:36 +02:00
James Turner
23cc1974d7 Fix crash with multiple windows on Sierra. 2016-10-20 10:44:32 +01:00
Florent Rougon
101bdce343 APTLoader: improve progress status info
It is not needed anymore to hardcode the number of lines of
$FG_ROOT/Airports/apt.dat.gz. The new method, which relies on
SGPath::sizeInBytes() and sg_gzifstream::approxOffset(), works as well
for the other dat files.

Add a new NavCache rebuild phase, REBUILD_READING_APT_DAT_FILES, since
the process is now made of two parts.

Rename NavDataCachePrivate::getDatFilesPaths() to
NavDataCachePrivate::findDatFiles(), because it now returns a
DatFilesGroupInfo (new struct) instead of a PathList. For the same
reason, rename NavDataCachePrivate::aptDatPaths to
NavDataCachePrivate::aptDatFilesInfo. Adapt signatures, etc.

This requires up-to-date SimGear and FGData.
2016-10-19 13:01:35 +02:00
Rebecca N. Palmer
0ec47c9802 Simplify Nasal security code 2016-10-18 23:01:24 +01:00
Rebecca N. Palmer
0a256038d3 Remove set-scenery-paths, make all scenery paths Nasal-readable
(It was probably broken anyway, due to path caching in tilemgr.cxx)
2016-10-18 22:29:44 +01:00
Rebecca N. Palmer
9f6ce5625c remove now-redundant warning 2016-10-18 22:17:34 +01:00
Rebecca N. Palmer
3b1f01c49d stop using /sim/terrasync/scenery-dir, fix scenery path order
Having non-Nasal-readable scenery paths breaks things
(The property continues to exist, but is now from-C++-to-Nasal only)
2016-10-18 22:10:09 +01:00
Florent Rougon
57402dec1b Fix a compilation bug that can appear before C++11
Initialization of std::vector can't be done simply in braces-style
(var = { ... }) before C++11.
2016-10-18 08:48:46 +02:00
Florent Rougon
f702f97220 APTLoader: better signatures, check array bounds, line numbers in error messages
Add checks to avoid read-past-vector-bounds errors.

Make the current line number in each apt.dat file available to methods
such as parseRunwayLine810(), parseRunwayLine850(), etc. for useful
error messages.

In APTLoader::parseCommLine():
  - use 'rowCode' instead of 'lineId' for consistency with the apt.dat
    spec and the rest of the code;
  - use 'unsigned int' for the type since row codes are always
    non-negative;
  - add a missing 'return' statement and improve an error message.

Small optimization in APTLoader::parseAirportLine().
2016-10-17 12:10:04 +01:00
Florent Rougon
72d0b516c8 APTLoader: rename member 'currentAirportID' to 'currentAirportPosID'
This will be clearer since it is a PositionedID and we are also dealing
with airport identifiers in the sense of the apt.dat spec in the same
class.

Rename 'line_id' to 'rowCode' in src/Airports/apt_loader.cxx

"Row code" is the expression consistently used for this number in the
apt.dat format spec. Since we already deal with airport *identifiers*,
this should make this piece of code easier to read.

For the same reason, rename the 'num' parameter of
APTLoader::parsePavementNodeLine850() to 'rowCode'.
2016-10-17 12:10:03 +01:00
Florent Rougon
da6d6eec5d APTLoader: move handling of Viewpoint lines to a separate method
- APTLoader::parseViewpointLine(): new method.
- APTLoader::parseViewpointLine(): check vector size to prevent
                                   past-bounds reading.

More accurate signature for fptypeFromRobinType()

Row codes in the apt.dat spec are always non-negative -> take an
unsigned int instead of just an int.

Use an initialization list for remaining members of APTLoader::APTLoader()

This is slightly more efficient in general. Swap the order of
declarations for the 'cache' and 'currentAirportID' members of
APTLoader to have the initialization list in the same order as the
member declarations (cf. g++'s -Wreorder option and
<http://stackoverflow.com/questions/1828037/whats-the-point-of-g-wreorder>).

Fix detection of blank lines by APTLoader::isBlankOrCommentLine()

In
<https://sourceforge.net/p/flightgear/flightgear/merge-requests/39/#cea6>,
it was decided to let the main apt.dat line reading loop give out
"lines" that may end with '\r', because most of the downstream code will
automatically get rid of this character thanks to its use of
simgear::strutils::split(). However, APTLoader::isBlankOrCommentLine()
didn't detect blank lines properly due to that trailing '\r', which
could cause bad behavior because the subsequent atoi() call could return
anything from a string containing only whitespace (the "anything" in
question being then interpreted as an apt.dat row code...).

Add method APTLoader::cleanLine()

This method returns a copy of the input line with trailing '\r' char(s)
removed.

APTLoader::loadAirports(): clean message when finding an unknown row code

The start of the log message could previously be overwritten by later
text because of the '\r' at the end of input lines (now obtained from
APTLoader::readAptDatFile()). Quite confusing! Use the new
APTLoader::cleanLine() to prevent this from happening.
2016-10-17 12:10:03 +01:00
Florent Rougon
9eb56fc9f1 Add tooltips in built-in launcher: remind to restart after changing scenery paths
Maybe this won't be necessary anymore in the future, but for now it is.
2016-10-17 12:10:03 +01:00
Florent Rougon
516a5cf016 Support merging of arbitrary apt.dat[.gz] files
It is now allowed to have the same airport appear in several apt.dat
files ($scenery_path/NavData/apt/*.dat[.gz] for each scenery path, plus
the default $FG_ROOT/Airports/apt.dat.gz, coming last). Airports found
in earlier files(*) take precedence over those found later, in case
several apt.dat files define the same airports. Airports that are
skipped due to this mechanism are logged with
SG_LOG(SG_GENERAL, SG_INFO, ...).

(*) using 1) FG_SCENERY order (followed by $FG_ROOT/Airports/apt.dat.gz)
    and   2) lexicographic order inside each $scenery_path/NavData/apt
             folder

With this commit, APTLoader::parseAPT() is replaced by two methods:
readAptDatFile() and loadAirports():
  - APTLoader::readAptDatFile() reads airport definitions from an
    apt.dat file into APTLoader's 'airportInfoMap' member variable,
    discarding duplicate definitions due to overlapping apt.dat files
    ('airportInfoMap' is an std::unordered_map instance in C++11 and
    later, an std::map otherwise);
  - APTLoader::loadAirports() reads each airport definition from
    'airportInfoMap' and loads it into the NavCache, the same way as
    APTLoader::parseAPT() used to do.

The airportDBLoad() function is not useful anymore, and is thus removed
(in NavDataCache::doRebuild(), APTLoader::readAptDatFile() is now called
once per apt.dat file, but APTLoader::loadAirports() is only called
once at the end, after duplicate airports have been discarded; the class
interface is much better suited to this scheme, because it can cleanly
retain the state between these calls).

By the way, this commit fixes an old bug: APTLoader's member variable
'last_apt_id' was used in several places but never assigned to, except
in APTLoader::APTLoader() as the empty string.

Thanks to Alan Teeder for his feedback and testing.
2016-10-17 12:10:03 +01:00
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
Florent Rougon
dfdd52a81b Use SGPath::realpath() for paths stored in the stat_cache table of the NavCache
This will avoid problems in case stampCacheFile() or
isCachedFileModified() is passed a relative path, or a path containing
.. components, etc. Among others, it ensures the stat_cache table only
contains absolute paths.

NavDataCache: read and write methods preserving order for string list props

New methods: NavDataCache::readOrderedStringListProperty() and
NavDataCache::writeOrderedStringListProperty().
2016-10-17 12:10:03 +01:00
Florent Rougon
cb84219c34 APTLoader:
add missing includes; proper interface for the APTLoader class
remove unused members 'last_apt_info' and 'token'

The APTLoader methods defined in src/Airports/apt_loader.cxx are now at
top level instead of being inside a 'class' definition block, therefore
they don't have to be indented anymore.

APTLoader::throwExceptionIfStreamError(): better API and implementation
2016-10-17 12:09:28 +01:00
Rebecca N. Palmer
31cb65e8d9 Nasal security: add --allow-nasal-read, warn on non-Nasal-readable
Terrasync, prepare for allowing --download-dir

Add unmangled_fg_scenery
2016-10-09 15:21:09 +01:00
James Turner
c4f584dadf Rewrite Mac Event-Input code 2016-09-28 21:16:24 -05:00
James Turner
347a89c1f2 Extend event-input with report-setting.
Can generate feature report data via Nasal callbacks. This is used to
drive the GoFlight LCD / LEDs.
2016-09-28 21:16:24 -05:00
Florent Rougon
eb1c6adbc7 fix.dat parser: correct use of sg_io_exception
- For sg_io_exception's constructor, 'location' is not the same as
  'origin'.
- Use simgear::strutils::error_string() to provide details on the error.
2016-09-28 12:22:54 +02:00
Florent Rougon
29c7fa54b1 fix.dat parser: indentation fix 2016-09-28 12:22:54 +02:00
Florent Rougon
30c8328399 fix.dat parser: check the stream's badbit flag after each I/O operation
- new private method FixesLoader::throwExceptionIfStreamError();
- call it whenever appropriate.
2016-09-28 12:22:44 +02:00
Florent Rougon
d9c879ff30 fix.dat parser: new class FixesLoader; change loadFixes() into a method
- loadFixes() becomes FixesLoader::loadFixes();
- the previous 'cache' variable (NavDataCache *) is now a private member
  of FixesLoader, named '_cache'.
2016-09-28 09:24:33 +02:00
Florent Rougon
cf9759f78f fix.dat parser: fix line numbering and better handle malformed data
- Line numbering was incorrect, because "in >> lat >> lon >> ident;"
  happily skipped over blank lines without increasing the line number.

- Safe stream input handling: first, std::getline() tries to read data,
  then we check whether that was successful (via the input stream's
  bool() method, implicitly called in the 'for' loop's exit check), and
  only if this is the case, we process the data that was read. The main
  problem with the previous code is that checking the stream's eofbit
  can't possibly predict whether a _future_ read will be successful---it
  may fail due to an I/O error, at least.

- Currently, the code uses atof() to parse the latitude and longitude
  fields. This should be fast, though not good at detecting errors in
  the input; however, this is not worse than the previous code which
  didn't handle such cases at all.

- Correctly deal with input lines containing a number of fields
  different from 3 (except for the header and the special '99' line):
  log a warning, ignore the line and continue. This adresses the problem
  described in
  <https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/87shydeen1.fsf%40frougon.crabdance.com/#msg35034274>.
  In short, the previous code entered an endless loop trying to process

   31.815914 -106.281897 EL PA

  from recent earth_fix.dat
  (obtained from <http://gateway.x-plane.com/navaids/LatestNavFix.zip>).
2016-09-28 09:24:33 +02:00
James Turner
ca70e64261 Request AMD PowerXpress. 2016-09-27 17:16:46 -05:00
James Turner
5bf9b3cd02 Remove the Ati viewport hack. 2016-09-27 17:16:34 -05:00
James Turner
2ff476a217 More safe subsystem accessors. 2016-09-27 05:58:47 -05:00
James Turner
52b91d4863 Fix a crash when network is slow. 2016-09-27 05:58:47 -05:00
Stuart Buchanan
14f20e4165 Add support for building meshes. 2016-09-22 20:40:26 +01:00
James Turner
465be55100 Tweak launcher layout margins.
Trying to squeeze things back into an XGA screen. Will backport once
I get feedback.
2016-09-08 14:49:52 +01:00
James Turner
feb10c4c43 Launcher sets —no-default-config automatically. 2016-09-08 11:41:40 +01:00
James Turner
0d069f2581 Fix launcher cmd-Q behaviour. 2016-09-08 11:41:21 +01:00
James Turner
db31e0d49c —config options can load non-XML files
Expand existing —-config option to read either property-XML files (as
it previously did) but for non-XML files, to parse them as command
line argument files.
2016-09-07 23:30:49 +01:00
James Turner
4294966781 Fix setting start offset with MP enabled. 2016-09-07 22:51:27 +01:00
Curtis L. Olson
7da08db463 Update default aircraft hangar catalog.xml url. 2016-09-07 11:39:37 -05:00
Curtis L. Olson
af3945f7f7 Clean up some 'visually' misleading indentation (where the indentation suggests
a different logic flow than is actually there.)
2016-09-06 11:11:06 -05:00
James Turner
13f8f13000 Adjust behaviour of —no-default-config option
Still read autosave and preferences.xml in this case, but skip all
config files (.fgfsrc, etc)
2016-09-05 16:15:55 +01:00
James Turner
3993adce5a Fix launcher failure when MP is enabled.
Only set —callsign argument if the user entered one.
2016-08-31 23:07:21 +01:00
Bertrand Coconnier
c226e08293 Fixed the initial location so that geodetic latitude and ASL are kept in sync. 2016-08-28 12:23:17 +02:00
James Turner
3c4542fba6 Fix re-selection of start location. 2016-08-21 10:36:54 -05:00
James Turner
904bb74036 Launcher sets location via properties.
Bypass the options system to set location from the launcher; this
allows the same code to be used in-sim for repositioning, while
keeping compatibility with other repositions approaches.
2016-08-20 19:46:19 -05:00
James Turner
1ca5ceb318 Launcher can see install Airports/ data. 2016-08-19 12:12:02 +01:00
James Turner
324f266283 Pass the install dir to Terrasync.
With Simgear commit d7d59b08a2f1a77a4247ec1a89d6ff48ed73f5c7, this
allows terrasync to be initialised from files in the install data,
which avoids downloading them again.
2016-08-18 16:23:39 +01:00
Rebecca N. Palmer
db825d3119 fix "QObject::connect: No such slot
NaturalEarthDataLoaderThread::onFinished()" error message
2016-08-15 23:10:06 +01:00
Rebecca N. Palmer
34394c91a9 fix hang on exit when multithreaded (bug 1830) 2016-08-15 07:58:40 +01:00
Erik Hofman
bd9e43e613 Fix a problem for MSVC 2016-08-12 11:48:34 +02:00
Rebecca N. Palmer
63ab28f0e6 QtLauncher: fix build with Qt < 5.4 2016-08-11 22:32:29 +01:00
James Turner
a60d07ea9c Incremental insert of NE data to the index. 2016-08-09 09:38:54 +01:00
James Turner
7cebc76b9d Async loading of NaturalEarth data for launcher. 2016-08-08 23:13:57 +01:00
James Turner
8577d74430 Move launcher summary to a separate tab.
This is an experiment to reduce the vertical height needed by the
launcher.
2016-08-08 17:47:09 +01:00
Erik Hofman
1c8542b65b Remove some debugging statements 2016-08-08 11:19:14 +02:00
Erik Hofman
fa99be7766 Use a bit less intrusive solution 2016-08-08 11:16:21 +02:00
Erik Hofman
02d037d205 Fix the startup position error. I'll leave it to Bertrand wether this is the best way to fix it 2016-08-07 11:41:03 +02:00
Torsten Dreyer
1947c100d9 Also use SBRJ as fallback.
Sigh. No real good idea how to /not/ hardcode this.
2016-08-06 23:12:43 +02:00
Alessandro Menti
2d86fc11ad Replace the NOAA METAR URL with the new, updated one 2016-08-04 20:34:34 +02:00
Erik Hofman
9ec4d7749f Add support for AeonWave 2016-08-04 18:43:10 +02:00
James Turner
ffdf542871 Launcher: fix ‘midnight’ time of day option.
TimeManager uses ‘midnight’ so we need to do the same.
2016-07-31 23:24:51 +01:00
James Turner
b06f4208e4 Adjustments to mouse picking API 2016-07-31 22:44:03 +01:00
James Turner
b8e2fb07df Port more HUD code to use line-segment list. 2016-07-31 22:44:03 +01:00
Erik Hofman
c17c3595c8 Set /sim/rendering/initialized to true at the appropriate moment and use it instead of /sim/initialized for the messagebox 2016-07-21 13:55:31 +02:00
Erik Hofman
08916602bb Make sure FlightGear is initialized before using the PUI dialog box, dump the the console otherwsise 2016-07-21 13:42:09 +02:00
Erik Hofman
e2216891be Move the PUI dialog code to James' new messagebox code and use that one instead for SG_LOG_POPUP to get a native popup window if available and fall back to a PUI one if not 2016-07-21 08:56:05 +02:00
Erik Hofman
5ab2d82c89 Show a popup dialog for every SG_POPUP message in the queue 2016-07-20 15:03:15 +02:00
James Turner
e30c886068 Adjust runway startup position with MP enabled
Relocate the start-up position to a plausible hold-short position
when MP is active and a runway start is requested. This does not (yet)
use ground-net data to identify a real hold-short position.
2016-07-17 21:11:14 +01:00
Erik Hofman
f1f2e9f21d Brendan Black:
when active does not touch the way the YASim jet calculates fuel flow, but separates out the afterburning component of thrust, calculates the TSFC of that component and uses the same method of fuel flow calculation for the afterburning component then adds it to the existing fuel flow

When inactive (atsfc doesn't exist or is zero) it just behaves exactly as before

I finally got around to testing this small patch thoroughly, and I'm satisfied that it doesn't affect anything else & works across many different versions (i've been testing it with current as it has changed over the last 7 months)
2016-07-17 11:30:07 +02:00
James Turner
4e239d2628 Fix persistence of on-ground location. 2016-07-16 18:23:48 +01:00
James Turner
07109d79f5 Improve rendering of longer parking names. 2016-07-16 17:49:12 +01:00
James Turner
e765d1c0fa Enforce a minimum pixel width for runway clicking
- ensures runways can be clicked when zoomed out.
2016-07-16 17:48:55 +01:00
James Turner
d90b8dcb33 Fix selection of parking positions by clicking. 2016-07-16 16:57:19 +01:00
James Turner
38202b0774 Launcher: show selected parking in yellow. 2016-07-16 12:07:34 +01:00
James Turner
4aee633be3 Fix starting up at a parking location.
Move parking-pos selection to finalizePosition, so that dynamics and
ATC controllers are available and work correctly.
2016-07-16 11:45:30 +01:00
James Turner
c0d93235de Fix for launcher always enabling MP 2016-07-15 22:48:37 +01:00
James Turner
100e8bf2b2 Further SGPath API usage improvements. 2016-07-15 16:49:13 +01:00
James Turner
ecb8ec57c0 FlightGear path API tweaks 2016-07-15 10:16:08 +01:00
James Turner
d800c49cb9 Custom MP server support. 2016-07-12 16:52:59 +01:00
James Turner
2eb5e6f0f4 Merge /u/jbicha/flightgear/ branch next into next
https://sourceforge.net/p/flightgear/flightgear/merge-requests/49/
2016-07-11 09:04:58 +00:00
Bertrand Coconnier
a1a7aa267c JSBSim sync.
* Fixed the initial conditions settings (geodetic altitude is now correctly computed).
* FGLGear reports the time at which it detected a violent ground hit (aka crash)
* Doc update of the kinematic component
* TurboProp code cleanup with the removal of lots of obsolete/no-op members.
2016-07-10 14:45:09 +02:00
Jeremy Bicha
25928bf614 Use CMAKE_INSTALL_BINDIR
Allow /bin install directory to be overriden. Debian for example uses this
to install FlightGear to /usr/games/ instead of /usr/bin/

https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
2016-07-09 18:52:58 -04:00
James Turner
9650cf4e6a Initial MP support in the launcher. 2016-07-08 09:36:54 +01:00
James Turner
7e607b8403 Fix fgValidatePath on Windows 2016-07-04 22:22:32 +01:00
James Turner
7870e03faf Build fixes for yasim tests / SGPath changes. 2016-07-04 10:17:41 +01:00
James Turner
400901c239 Update for changed SGPath::realpath signature 2016-07-04 09:06:42 +01:00
James Turner
8e875b22f5 fgValidatePath uses SGPath 2016-07-03 23:59:40 +01:00
James Turner
fc3d47cd34 More std::ifstream -> sg_ifstream 2016-07-03 23:48:44 +01:00
James Turner
7f3fe584e3 Update for path-aware easyXML API 2016-07-03 23:43:39 +01:00
James Turner
9cffcf63ae Further SGPath encoding fixes. 2016-07-01 04:54:29 -05:00
James Turner
40b74c4e32 Fix an assert on Windows 2016-06-29 16:25:42 +01:00
James Turner
0b11dd626a Further Windows SGpath fixes 2016-06-28 16:52:42 +01:00
James Turner
6d0c2070fd Use future-proof SGPath APIs.
Remove uses of .str(), .c_str() and some other methods of SGPath.
Pass SGPath directly where possible, or explicitly convert to the
appropriate 8-bit encoding.
2016-06-28 10:08:38 +01:00
Erik Hofman
1eb6fb65dd Use the SimGear sample format types 2016-06-27 13:21:13 +02:00
Bertrand Coconnier
54274a4b9c convert another path to std::string before using it to prevent a compiler error 2016-06-25 21:26:50 +02:00
Erik Hofman
e165fc5ebe convert the path to std::string before using it to prevent a compiler error 2016-06-25 15:00:35 +02:00
Erik Hofman
7f4fe977a1 Convert PKGLIBDIR to SGPath before returing it to prevent a compiler error 2016-06-24 12:54:01 +02:00
James Turner
16814800ce Use Paths instead of strings. 2016-06-22 17:36:05 +01:00
James Turner
03ecac9dbc Work with new SGPath API. 2016-06-22 17:36:05 +01:00
James Turner
6f95e61da8 For stable versions, download data tarball directly
Part of https://sourceforge.net/p/flightgear/codetickets/1865/
2016-06-17 22:48:24 +01:00
James Turner
1d912c91df Avoid overlap of ratings / progress bar
Part of issues mentioned in:

https://sourceforge.net/p/flightgear/codetickets/1865/
2016-06-17 22:42:33 +01:00
James Turner
e4e0db5cac Aircraft-states feature. 2016-06-17 18:15:35 +01:00
James Turner
3f7e59a1a5 Allow scenery installation from the launcher.
Replaces FGadmin functionality.
2016-06-15 22:28:54 +01:00
Erik Hofman
010d13445a Code cleanup after fixing the sound position and orientation 2016-06-14 14:11:12 +02:00
Erik Hofman
3963d2cdee Do not use properties but get the position and orientation information straight from the view manager 2016-06-13 13:50:40 +02:00
Bertrand Coconnier
a61c0bfdb4 Sync'ed with JSBSim: avoid the lag in <kinematic> while trimming. This allows the trim on ground for the P51 to succeed. 2016-06-12 17:04:35 +02:00
Bertrand Coconnier
dc7f065e08 Sync'ed with JSBSim:
* Fixed the trim on ground algorithm. Now JSBSim aircrafts should no longer be 'dropped' on the runway at start.
* Removed a correction on the propeller induced velocity that was giving erratic results when the aircraft aero velocity is very small.
* Various source comments updates.
2016-06-12 11:36:45 +02:00
James Turner
a3d660e423 Revert "Special case this define"
This reverts commit 58731a01e2.
2016-06-09 20:34:43 +01:00
James Turner
58731a01e2 Special case this define 2016-06-09 16:20:25 +01:00
James Turner
e672626558 Explicitly shut down logging
- needed to call FreeConsole on Windows.
2016-06-09 11:04:32 +01:00
James Turner
3a15b2f979 Launcher: fix a crash on searching locations
When hitting return multiple times, could hit a null-pointer
crash here.
2016-06-09 11:04:32 +01:00
James Turner
9c612af124 Improved feedback from scenery download. 2016-06-09 11:04:32 +01:00
James Turner
95f86b658c Hide add-ons tab when running launcher in-app 2016-06-08 12:00:35 +01:00
James Turner
861b682acf VS2015 fixes
Explicitly specialize these templates.
2016-06-01 22:57:11 +01:00
Erik Hofman
1a0f3d8826 Revert some debugging code which krept in 2016-05-28 10:05:09 +02:00
Erik Hofman
ea6e1c9854 Fix the header name change from sample_openal.hxx to sample.hxx 2016-05-28 09:57:03 +02:00
Bertrand Coconnier
f25304ace5 Tentative to fix JSBSim bug SF #115 : don't compute cl-squared when qbar is too low otherwise its value will go through the roof and so will the induced drag. 2016-05-27 13:50:35 +02:00
Erik Hofman
b9c2ddb94f Merge branch 'next' of ssh://git.code.sf.net/p/flightgear/flightgear into next 2016-05-27 08:06:12 +02:00
James Turner
5d624b4882 Fallback URL when official catalog is not found.
Tolerate the case where a URL matching the exact FG version is
not found; lookup a generic URL, in the hope it supports our
version (additional changes will make this more likely)
2016-05-26 17:37:26 +01:00
Erik Hofman
94f6db5857 Prevent rf2 from becoming inf 2016-05-25 10:30:34 +02:00
Bertrand Coconnier
adeb0241ae Bug fix for JSBSim SF bug #115: P51D crashes when advance ratio goes through zero 2016-05-23 20:02:36 +02:00
Erik Hofman
013770b3f8 Merge branch 'next' of ssh://git.code.sf.net/p/flightgear/flightgear into next 2016-05-23 11:39:59 +02:00
Erik Hofman
6fb6446189 Fix file permissions 2016-05-23 11:39:40 +02:00
Erik Hofman
34011c1dec Code cleanups, code updates and fix at least on (possible) devide-by-zero 2016-05-23 11:38:05 +02:00
James Turner
7dfe556b4a Real fix for Mac deployment issues. 2016-05-21 14:00:29 +01:00
James Turner
f2273c7793 Testing if this change broke Mac deployment.
Hopefully it didn’t but the time-frame is correct and it’s just
about the only code that happens before QApplication is created.
2016-05-21 10:36:51 +01:00
Florent Rougon
959ac91a8b Add missing include in src/Navaids/NavDataCache.cxx
#include <sstream> is needed for NavDataCachePrivate::init()
which uses std::ostringstream.
2016-05-19 09:19:06 +02:00
Torsten Dreyer
a4a3659ee9 Expose the type (loc/vor) for the navradio 2016-05-18 08:28:27 +02:00
Richard Harrison
b128de3bc6 Fix MSVC10 compilation errors by using streams. 2016-05-12 12:05:28 +02:00
Richard Harrison
887916b26e Multiplayer packet boundary warnings
* Add warning if multiplayer packet boundary reached
* Add warning if string too big for remaining space in packet

ref: https://sourceforge.net/p/flightgear/mailman/message/35059961/
2016-05-12 09:38:03 +02:00
Edward d'Auvergne
977ec5063f Shift of management of the precipitation OSG scene graph to the scenery manager.
The precipitation branch of the OSG scene graph is now centrally managed by the
scenery manager rather the precipitation manager itself.  The scene graph
initialisation from the constructor has also been shifted into the new
FGPrecipitationMgr::sceneGraphSetup() function.
2016-05-03 18:44:46 +02:00
Edward d'Auvergne
b12a56b526 Prevention of the creation of multiple OSG scene graph roots.
As the scenery manager's init() function is called twice on start up, two OSG
scene graph roots would be created.  A number of scene graph branches would be
initalised on the first root, but then be lost as the second is created.  This
fixes the precipitation branch, for example.
2016-05-03 18:42:43 +02:00
Florent Rougon
2b8937c2c2 apt.dat parser: indentation fixes; add a comment
- The first place where indentation is fixed was really misleading, at
  least.

- The added comment "'line' may end with an \r character [...]" just
  clarifies something that has been there for ages, to avoid people
  falling into the trap.
2016-04-27 10:57:19 +02:00
Florent Rougon
d85fc7b7e7 apt.dat parser: various little improvements
- don't duplicate the line buffer (array of char as well as
  std::string), it is not useful here;
- don't corrupt (truncate) input lines longer than 2048 bytes: there is
  no such limitation in the apt.dat v1000 format spec;
- fix comments handling: the apt.dat v1000 format spec states they must
  start with *two* '#' characters.
2016-04-27 10:39:21 +02:00
Florent Rougon
b0b81bcd3e apt.dat parser: better input stream handling
- use ( in.getline(...) ) as the main loop condition instead of
  ( ! in.eof() ). This should behave better (see
  <https://gehrcke.de/2011/06/reading-files-in-c-using-ifstream-dealing-correctly-with-badbit-failbit-eofbit-and-perror/>);
- check in.bad() after exiting from each reading loop; if the exit was
  caused by an error, log an appropriate message and throw an
  exception.
2016-04-27 10:39:21 +02:00
Florent Rougon
d6f0bc6fb5 apt.dat parser: separately handle the first two lines; fix line counting
- The first two lines of apt.dat have their own special syntax -> handle
  them separately. Before this commit, the test "is the first character
  an 'I' or an 'A'?" was done for *every* line of apt.dat, while it is
  only relevant for the first one.

- Fix counting of the current line number (it was most of the time
  0-based so far, which could be seen in error messages, because the
  second line of apt.dat was absorbed without going through the common
  code path where lines are normally read at the top of the while loop).
  With this commit, line numbers in apt.dat are consistently counted
  starting from 1.
2016-04-27 10:39:21 +02:00
Florent Rougon
85653f04d4 apt.dat parser: remove useless code
Remove useless code before parsing the "row code" (terminology from the
apt.dat v1000 spec). The row code is parsed with atoi(), which will
automatically stop at the first space found if it saw at least one
digit, thus there is no need to replace it with '\0', AFAICS.

One could replace the existing atoi() call with things that do better
checking, but my tests showed that would be a bit slower, so I let it
this way (tried with std::istringstream and strtol()).
2016-04-27 10:39:21 +02:00
Florent Rougon
a43786f8dd apt.dat parser: clearer log and exception messages
- the 'apt_dat' variable introduced here will be used in further
  commits;
- use two spaces for indentation, as seen in most of the file.
2016-04-27 10:39:21 +02:00
Richard Senior
29fe6569c4 Fix incorrect QNH in spoken ATIS when using live weather fetch
When using live weather fetch, the QNH should be obtained from
environment/metar/pressure-inhg.

See: http://sourceforge.net/p/flightgear/mailman/message/35037125

Add new method getQnhInHg to ATISInformationProvider and its implementations
to avoid rounding errors converting from hPa back to inches in ATIS reports.

The CurrentWeatherATISInformationProvider (used when live weather fetch is
not in use) continues to use the property environment/pressure-sea-level-inhg.
This produces the incorrect QNH at airports significantly above sea level
but this needs fixing elsewhere to calculate the correct QNH.
2016-04-26 10:52:29 +01:00
Richard Senior
f825bb4f3c Eliminate use of non-standard round() function in ATISEncoder
Use of round() produces compilation errors with MSVC10 and the build server
2016-04-26 10:42:48 +01:00
Torsten Dreyer
5c0a477a47 Slightly better handling of setting initial pos
don't use KSFO as default when an unknown ID was
specified for --airport arg
TODO: don't hardcode default airport
2016-04-24 10:42:58 +02:00
Richard Senior
13f31782a1 Improvements to spoken ATIS
- Add section tag to support inclusion of ATIS fragments.

- Add visibility, QNH and cloud tokens to support new ATIS formats.

- Add support for starts-with, ends-with and contains comparisons in
  conditionals, including negated versions.

- Strip and convert case in comparisons.

- Speak VRB wind direction as "variable".

- Speak zeroes in fractional part of QNH inHg.

- Force US voice in US, Canada and Pacific; UK voice in UK.
2016-04-24 10:42:26 +02:00
James Turner
2da1d38c56 Clearer aircraft search prompt. 2016-04-17 18:00:37 +01:00
Alessandro Menti
98a6b60b00 Launcher: silence 'Unknown aircraft URI scheme' warning on empty selection
------------------------------------------------------------------------
If no aircraft is selected in the launcher, the routine
AircraftItemModel::indexOfAircraftURI is called with an empty QUri,
triggering a warning in the terminal.

This commit removes such warning by ignoring QUris with empty schemes
(the routine still returns an invalid index).
2016-04-17 17:55:05 +01:00
Alessandro Menti
550dde314f Launcher: do not launch the simulator when closing the Qt launcher with ESC 2016-04-17 17:54:41 +01:00
Alessandro Menti
4820026907 Launcher: fix window flags on the "Add catalog" progress dialog 2016-04-17 17:54:02 +01:00
Alessandro Menti
e9e05081d5 Launcher: state that it is needed to press Enter to search for the airport 2016-04-17 17:53:36 +01:00