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.
header guard.
compareScheduledFlights() moved to a static member with const parameters.
ctor initialization moved to intializer-list.
replace NULL with nullptr.
spelling.
blocktime moved to the initializer-list.
touch moved to the initializer-list.
explicit ctor.
virtual dtor.
remove unnecessary semicolons (i.e. empty statements).
SPDX tags.
header guard.
spelling.
SPDX tags.
parameter to loadAirportFormFile() changed to const&.
parameter to Line() ctor changed to const&.
parameter to loadAirport() changed to const&.
member variable initialization.
++prefix for complex types.
virtual dtor.
SPDX tags.
header guard.
explicit ctor.
parameter to haveProperty() changed to const*.
avoid undefined behavior by explicitly converting int to string.
spelling.