Values for options can be separated by both the "=" character (the old way) and a space.
The switch options enable/disable, now have a third variant with a main name that can take the values true/false, 1/0 or yes/no. E.g., in addition to the pair of options `--enable-fullscreen` and `--disable-fullscreen`, we now also have an option `--fullscreen`, which can be used with no value (the default is enable) or with true/false, 1/0 or yes/no.
All existing options work as before.
Fix a crash when passing incorrect number of arguments to
various telnet methods; check the number of tokens and
report an error if not as expected.
Also fix the file-name to avoid collison with the SGPropertyNode
implementation file
SF-ID: https://sourceforge.net/p/flightgear/codetickets/2823/
Allow wrapping of a naFunc as a custom binding class, without
the need to create a proxy command in the global command
manager.
Requires corresponding SG commit.
Check for a failed path resolve in FGTextrueManager, and report this
explicitly with the input path, to give the user some idea what is
going on.
Thanks to Huntely Palmer for the suggestion.
SF-ID: https://sourceforge.net/p/flightgear/codetickets/2820/
Make the min, max and factor arguments to propert-adjust
and property-multiply optonally use a -prop version to
read a value from the global property tree.
Add a unit-test written by Huntely, and extend the AP configure code, so the
'time' config of monostables doesn't trigger an incorrect warning in the
console / logs.
Thanks to Huntley Palmer for pointing this out.
SF-ID: https://sourceforge.net/p/flightgear/codetickets/2812/
In YASim XML <gear>, `spring2` is a new dimensionless term. Default
value zero is backwards compatible. The new spring force equation is:
force = _spring * compression * (_frac + spring2 * _frac**2)
This is intended to help with
https://sourceforge.net/p/flightgear/codetickets/1509.
This is causing simulator hangs at BIKF, likely due to previously
tolerated scenery data now triggering very large gear forces.
This reverts commit 6df2904f75.
Add a 'scenery_path' field to the 'airport' table of the SQLite
NavDataCache database. For each airport, this field indicates the
scenery realpath() that contributed the apt.dat file for the airport (as
an exception, for airports whose apt.dat file is
$FG_ROOT/Airports/apt.dat.gz, the path thus stored is for now $FG_ROOT,
which is technically not a scenery path). This path is then made
available via FGAirport::sceneryPath(), which allows us to implement the
following change (in this commit):
A) The lookup of *.procedures.xml is unchanged.
B) For other XML extension files (groundnet, ils, runway_rename,
threshold, twr):
- The search performed by XMLLoader::findAirportData() through
globals->get_fg_scenery() stops immediately after the scenery path p
that contributed the apt.dat file for the airport.
- Paths that come earlier than p in globals->get_fg_scenery() order may
contain XML extension files that will *override* sibling files that
might exist in p (as was already the case before this commit).
The rationale behind this change is that we don't want a custom scenery
with good data in its NavData folder regarding airport FOO to get
"ruined" by files such as FOO.threshold.xml present in the TerraSync
directory---which is assumed to come later in globals->get_fg_scenery()
order.
*.procedures.xml files are excluded from the change because there is a
widespread use of a huge set of procedure files for the whole world; if
airport FOO in a custom scenery has no procedure files, we do want to
let FlightGear find FOO.procedures.xml inside the scenery path
containing the huge dataset (which should come *after* custom sceneries
in globals->get_fg_scenery() order so as to give these custom sceneries
the option to provide better *.procedures.xml files and have them take
precedence over less specialized sources such as the huge dataset).
Reference discussion: https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/CAKor_THrQCiS1ES_ENSrmn1j3s39dX0qQXSbYBUz6yuokse_pQ%40mail.gmail.com/#msg37860751
The problem was that FGProperties::bind()'s call of
tiedProperties.Tie("/sim/freeze/master", ..., &FGProperties::setFreeze)
was calling FGProperties::setFreeze(true) before it returned, but we
were only setting _simFreezeNode *after* tiedProperties.Tie() had
returned.
tiedProperties.Tie() simply returns the node that it was given as its
first arg, so we simply sets _simFreezeNode to the value it would have
taken later, before calling tiedProperties.Tie().
- record time values to only change time propertes when
actually modified
- fire listeners manually on the tied properties (gmt and gmt-string)
- make /sim/freeze/master listenable
header guard.
replace macros with constexpr.
compareSchedules moved to a static member.
ctor initialization moved to intializer-list.
string prefix via substr() changed to resize().
++prefix for complex types.
spelling.