1
0
Fork 0
Commit graph

15437 commits

Author SHA1 Message Date
Julian Smith
c872af41bf Allow AI carrier to be always tied exactly to MP carrier.
Also fixed uneven MP carrier motion.

If /ai/models/carrier[]/ai-latch is true (e.g. by MPCarrier.nas), we
set /position/* and /orientation/* in C++ every frame instead of in
nasal. For external multiplayer carriers the values are copied from
/ai/models/multiplayer[]/*, so the AI carrier follows the corresponding MP
carrier exactly. For this to be useful, multiplayer motion needs be smooth,
e.g. with /sim/time/simple-time/enabled=true.

scripts/python/recordreplay.py
    Added --carrier test - checks that multiplayer carrier moves with even
    speed.

src/AIModel/AIBase.hxx
    Added speed_fps, to be kept up to date and tied to velocities/uBody-fps
    when we are a carrier. Previously this was set from Nasal which doesn't
    do what is required when all updates happen in C++.

src/AIModel/AICarrier.cxx
src/AIModel/AICarrier.hxx
    If is-user-craft is true, we directly update /position/* every frame.

    If ai-latch is true, we don't call TurnToLaunch(), TurnToRecover(),
    ReturnToBox(), TurnToBase() etc, because our position and orientation is
    determined only by multiplayer packets.

src/AIModel/AIMultiplayer.cxx
src/AIModel/AIMultiplayer.hxx
    If an mp craft is a carrier, MP packets define velocities/speed-kts but
    set ecLinearVel to all-zeros. So we now copy across to ensure that the
    extrapolation algorithm has a velocity to work with. Previously the zero
    velocity caused very uneven motion.

    If ai-latch is true we set AI craft's position+velocities directly from
    the equivalent (extrapolated or interpolated) MP position, every frame. We
    also set AI craft's orientation. And we copy MP's uBody-fps to AI's
    velocities/speed-kts which ensures that friction works between carrier deck
    and aircraft undercarriage.

    Added logging of raw speeds implied by multiplayer packets, activated by
    /sim/log-multiplayer-callsign; used by scripts/python/recordreplay.py's
    --carrier test.

src/AIModel/AIShip.cxx
    Tie velocities/uBody-fps to new speed_fps member and set speed_fps in
    update() along with members that are tied to properties.

    Replaced code that calculated new position using heading and speed:

        Previously the new position after dt was calculated using
        ft_per_deg_lat, ft_per_deg_lon, speed_north_deg_sec and
        speed_east_deg_sec. But this was moving slightly faster than the
        specified speed.

        This was leading to incremental errors when a different Flightgear
        instance extrapolated the multiplayer position from the information in
        multiplayer packets, because the specified velocity was too small, so
        we jumped forwards when extrapolation moved to a new packet.

        The fix is to use a Quaternion-based calculation to calculate movement
        in the direction specified by (heading, pitch, roll), as done by other
        code such as the view code.

src/Main/fg_init.cxx
    Moved FGAIManager to just before FGMultiplayMgr so we send latest info in
    mp packets.

src/MultiPlayer/multiplaymgr.cxx
    Fixed minimum transmit rate calculation - if transmit rate is less than 1,
    default to 1, not 10.

src/Network/props.cxx
    Use more precision when sending double-precision values e.g. to telnet
    client. Otherwise for example UTC times don't have sufficient resolution.

src/Viewer/viewmgr.cxx
    Generate internal logs of multiplayer position and speed (after
    interpolation/extrapolation) if /sim/log-multiplayer-callsign is set. Used
    by scripts/python/recordreplay.py's --carrier test.
2021-06-25 11:08:12 +01:00
Julian Smith
31c7fc8565 src/Scripting/NasalSys.cxx: show source line if we get error while parsing Nasal.
Helps track down errors in Nalsa embedded inside XML - line numbers are from
start of Nasal, not start of XML file.
2021-06-25 10:32:17 +01:00
Julian Smith
97a25b79ea src/Scripting/NasalSys.cxx: avoid noisy diagnosic if running test-suite. 2021-06-25 10:32:17 +01:00
legoboyvdlp R
0a0d0adc5f De-yodify a true condition too 2021-06-24 15:29:10 +01:00
legoboyvdlp R
3ab4de1436 De-Yodify false == conditions throughout the code-base 2021-06-24 15:29:10 +01:00
legoboyvdlp R
667dc8a02a audioindex.cxx: readability improvements: remove Yoda condition and use NOT operator rather than == false 2021-06-24 15:29:10 +01:00
James Turner
788d6ab666 Attempt to catch exceptions during subsystem creation.
Part of isolating location of ‘random fatal exception on startup’
issues.
2021-06-24 15:26:47 +01:00
James Turner
c404bb6b37 Reduce warning log spam in NaN position.
Try to catch NaN SGGeod position before we pass them to the intersect
visitor, so we don’t fill the console/logs with error messages: we
catch NaNs in other places.
2021-06-24 15:24:20 +01:00
James Turner
083d364f9c NavCache: don’t crash if rebuild is abandoned
Add a flag, so we can cleanly exit/join the rebuild thread, if we
are asked to delete the NavCache during a rebuild.
2021-06-18 12:38:50 +01:00
James Turner
20e605ca13 NavCache: tolerate BUSY in prepares
This is obscure, but with multiple copies of FG running, we can
get SQLITE_BUSY when doing prepares as well as during exec/steps.
2021-06-18 10:05:42 +01:00
James Turner
bee7b0164f Fix reset hang: shut down the Emesary recipient
Requires corresponding SimGear update
2021-06-17 15:57:03 +01:00
James Turner
c31d8c4e65 Make NavData cache exception silent 2021-06-17 15:57:03 +01:00
James Turner
0243b996fe Base texture-cache-dir on actual download dir
Previously we always used the default download dir, and ignored any
user override of this. Use the active download dir as the base for
the cache dir.

Also write the cache dir to the property tree, and wipe it on a
clean uninstall.
2021-06-14 13:54:32 +01:00
James Turner
bcc728f4e5 Launcher: don’t persistent cache GUIDs
GUIDs aren’t stable across different builds of the cache, which causes
odd behaviour when switching between stable and next. Use idents and
lat-lon instead, since these should be stable.
2021-06-14 11:50:57 +01:00
James Turner
e407ba75ef Launcher: add ‘restart on exit’ option 2021-06-14 10:49:29 +01:00
James Turner
bdcb30d785 Launcher: pass catalog paths via fg-aircraft
This should enable hangar aircraft to be found when searching for MP
models
2021-06-14 10:49:04 +01:00
James Turner
fa50fe60cd Update file extension for FGData 2021-06-13 19:41:16 +01:00
James Turner
c8d5296f7b Fix a missed rename in debug builds. 2021-06-11 15:40:25 +01:00
James Turner
6232fd7978 Fix for abandoned cache rebuild dialog
Sentry-Id: FLIGHTGEAR-75G
Sentry-Id: FLIGHTGEAR-860
Sentry-Id: FLIGHTGEAR-BR2
2021-06-11 12:56:23 +01:00
James Turner
e23bf8d7d2 TerraSync: match API change
Pass the scenery path suffixes here to terraSync explicitly, to
avoid it needing to read the properties from a hard-coded path,
which is inefficient.
2021-06-11 09:59:33 +01:00
James Turner
72ec70f275 Ensure transient octrees bypass the NavCache 2021-06-11 09:59:33 +01:00
James Turner
a17180f5b0 ATCMgr: cache the destination property node
Avoid a per-update fgGetString call
2021-06-10 14:39:15 +01:00
James Turner
cf160cc925 AIAircraft: cache controls propertes
Avoid a per-update() lookup of the AI controls properties. As part
of this, bypass updatePrimaryTargetValues for the user aircraft,
where it doesn’t make sense.
2021-06-10 14:39:15 +01:00
James Turner
14b7b5d3a1 Use a node for setting local time zone string 2021-06-10 14:39:15 +01:00
James Turner
691abf25c5 ATC: fix crashes on shutdown 2021-06-10 14:39:15 +01:00
Julian Smith
411953e89b src/AIModel/AIMultiplayer.cxx: fixed some replay unevenness.
We previously ignored mp packets if their .time was very different from local
time, but this stops time-compensation (e.g. with simple-time) from working and
is unnecessary because we clean up old packets anyway.

Also removed unnecessary erase of mp packets after interpolation.
2021-06-10 07:34:50 +01:00
James Turner
d77606cbe9 FindAndCacheAircraft: better error messages
When we fail to find the request aircraft, ensure we log the paths
to Sentry. If the user didn’t supply any aircraft paths at all, or
was using a hangar aircraft, adjust the error dialog text, to make
it a bit clearer what is going wrong.
2021-06-08 17:48:20 +01:00
James Turner
9695847a00 FGCom: log more IAX messages at SG_INFO 2021-06-08 17:47:11 +01:00
James Turner
8618e55774 FGCom: attempt to avoid crashes seen by Sentry
This is a wild guess, but shouldn’t do any harm and might give some
data about what is going wrong.
2021-06-08 17:46:50 +01:00
James Turner
6a7de07fda ErrorReporter: fix a crash on exit found by ASan
If we exit without shutdown()-ing the error report, ensure the
error logging callback is cleaned up.
2021-06-08 17:46:05 +01:00
Julian Smith
81e12d7c2e test_suite/unit_tests/Scripting/testGC.cxx: Restore nasal state when closing down.
Need to restore global_nasalMinimalInit to false in NasalGCTests::tearDown(),
otherwise later run of NasalSysTests::testCommands fails.
2021-06-07 22:24:56 +01:00
Lars Toenning
8a8973fe15 AIManager: Explicitly take SGSharedPtr
Otherwise a SGSharedPtr is implicitly created on ai_list.push_back(model). It's not clear to the caller that FGAIManager takes care of the passed raw pointer.

Also fixes a bug for swift using the passed dangling pointer after the created SGSharedPtr of FGAIManager got out of scope and deleted the resource.

As this commit mainly addresses the swift crash (also for backport to LTS) it doesn't fix other calls to ::attach(..) which might also use the raw pointer afterwards.
2021-06-07 12:43:50 +01:00
James Turner
2895ea8b77 GroundNet: try to reduce crashes with bad routes
Throw an exception in the condition encountered in FLIGHTGEAR-NJN
2021-06-04 16:59:12 +01:00
James Turner
7935d5d97c NavData poly-lines: split out from main Octree
Use a transient index for the poly-lines. This avoids NavCache disk
contention when multiple copies of FG race after the rebuild completes.

Should reduce locking errors early in startup.
2021-06-04 16:59:12 +01:00
Julian Smith
ef07f26023 src/Scripting/nasal-props.cxx:f_getAttribute(): added VALUE_CHANGED_UP and VALUE_CHANGED_DOWN. 2021-06-02 19:06:58 +01:00
Julian Smith
a5de1cc33f src/Main/main.cxx: updated call to SGPropertyLockControl().
We now allow restoration of previous value-changed property callback behaviour.
2021-06-02 19:06:58 +01:00
Julian Smith
23b3c21669 src/Main/main.cxx: workaround for ui callbacks without default parent callbacks.
We now set VALUE_CHANGED_DOWN on /sim, otherwise popup text does not appear.
2021-06-02 19:06:57 +01:00
Julian Smith
07b676a6c8 src/Main/main.cxx: moved property-locking control into /sim/property-locking/. 2021-06-02 19:06:57 +01:00
Bertrand Coconnier
d310b84bdf Avoid propeller spinning in the wind (issue #2581)
Some propellers could start windmilling very easily under mild wind conditions (11 kts). And in stronger wind the propeller could even generate some power and torque strong enough to turn the aircraft upside down.

This was due to the combination of:
- Propellers generating power (wind turbine) for advance ratio higher than 1.0 (is it plausible !?!)
- Powers and torques computed with ludicrously small RPMs.

So this commit basically filters out extremely small RPMs in order to avoid huge numbers resulting from division by small values.
2021-05-29 15:59:56 +02:00
James Turner
3bef9e7747 Move some ALERTS to MANDATORY_INFO 2021-05-28 11:59:10 +01:00
James Turner
9297f62d2f Fix some missed renames for sg_random.hxx
Ticket-Id: https://sourceforge.net/p/flightgear/codetickets/2595/
2021-05-28 11:58:57 +01:00
James Turner
cc60472d26 Ground-net errors: use a tag for the ICAO 2021-05-26 11:10:21 +01:00
James Turner
118c2095b6 Launcher: remove a log message 2021-05-26 10:24:36 +01:00
James Turner
180ad8d2d8 NavCache: avoid spurious message on rebuild 2021-05-26 10:22:59 +01:00
James Turner
34b8fbc58e Precomputed random numbers API
Use updated pre-compute API for random numbers

By Marc Eberhard
2021-05-25 12:57:07 +01:00
James Turner
695d41a1eb Raise minimum OSG version to 3.6 2021-05-24 16:47:32 +01:00
James Turner
4370d3d1f7 Fix another Qt forwards/backwards compat point 2021-05-24 16:45:35 +01:00
James Turner
a702fd7b27 Controls: ensure engine index is valid
Some spacecraft send out-of-range engine numbers from the JSBsim side.
Should probably be fixed in JSBsim itself but let’s check here to
keep compat with existing FDMs.
2021-05-24 15:54:17 +01:00
James Turner
bc4a2b3ab7 If-def for Qt compat forwards and backwards. 2021-05-24 15:44:19 +01:00
James Turner
f009c54773 Qt deprecation fixes 2021-05-23 20:14:19 +01:00