Date: Fri Dec 22 08:18:12 2023 +0100
Gyro: Added commend describing the need for an actual correct physical model
Attitude indicator fix spin when caged
When caged, the instruments gyro should still spin.
Caging also serves as fast-erect.
- Ported gyro spinup/down configurability:
attitude_indicator, attitude_indicator_electric, turn_indicator
- Remove tied spin property and have it written by setValue:
attitude_indicator
- Made vaccum based instruments configurable regarding minimumVaccum,
based on KMC manufacturer infos: attitude_indicator, turn_indicator
- Refactored heading_indicator_dg props init code to behave like
the others, namely overwritability by aircraft.xml/save-state
heading_indicator_dg: made instrument gyro spin up/down time configuravle and changeable during runtime
The defaults are as with the previous hard coded gyro (4s up / 180s down).
Can be overridden in instrumentation.xml: <gyro-spin-up-sec> and/or <gyro-spin-down-sec>.
Also exposes same-named runtime changeable properties in the registered instrument subnode.
Made simple gyro spin up/down time configurable
heading_indicator_dg: Added caging and tumbling
Exceeding G Limits will make the gyro tumble. This is bad for the gimbal bearings because
the gyro works out of spec.
This can be prevented by caging the gyro before such maneuvers.
A tumbling gyro will either stabilize after some time or when forced into axis by caging.
G-Limit is configuable via new "limits/g-limit-tumble-factor" property.
heading_indicator_dg: Implement transport wander
When travelling the gyro will be offset depending on the speed travelled.
This is because the meridian lines converge.
Example: flying west at 100 kts at +45° north gives: (100 x Tan 45)/60 = ~1.66 degrees per hour.
heading_indicator_dg: correct drift depending on latitude; latitude nut for correction
At the northern hemisphere the gyro drifts, letting the DG show a under-read.
This is depending on latitude: about 15°/hour (360°/day) at the north pole (+90°Lat) down to zero at the equator.
On the southern hemisphere it is the other way around and the gyro drifts and show over-read values.
To counter the drift, there is a "Latitude Nut" ("./latitude-nut-setting"-property) which needs to be set to the
latitude the gyro should be calibrated to. This cancels all drift at that latitude, but other latitudes
will have an error. (This is a setting usually done at the factory. The implementation expects the
aircraft to set this, and probably restrict it to only be changeable on ground).
heading_indicator_dg: make gyro spin writable from prop tree
heading_indicator_dg: made limits configurable and changeable at runtime
heading_indicator_dg: Added optional instrument config option <minimum-vacuum>
This gives the minimal suction in inHG that lets the gyro spin fully up.
Should be between 4.0-5.0 for most planes.
heading_indicator_dg.cxx: Factor corrected
Here the factor was 100.
The factor of the other implementations is "factor" wich is "100*POW6(spin)".
The change corrects this to be consistent with the other implementations.
heading_indicator_dg.cxx: gyro can switch between electrically and vaccum now
For this just add to instrumentation.xml a <suction> tag pointing to the suction source.
The default is electrically driven with default power-supply locations
(when neither <power-supply> or <suction> was given).
Vaccum driven:
<heading-indicator-dg>
<name>heading-indicator</name>
<number>0</number>
<suction>/systems/vacuum/suction-inhg</suction>
</heading-indicator-dg>
Electrically driven:
<heading-indicator-dg>
<name>heading-indicator</name>
<number>0</number>
<power-supply>/systems/electrical/outputs/heading-indicator</power-supply>
<minimum-supply-volts>12.0</minimum-supply-volts>
</heading-indicator-dg>
- add new VRP type
- add the concept of temporary waypoints / POIs which are not stored
in the persisten cache
- add Nasal APIs to create/delete/move waypoints, in addition to the
existing create-waypoint and delete-waypoint commands
- allow POIs/waypoints to have names as well as idents
- Ensure ident/name and spatial queries work correctly for temporary
and dynamic waypoints
- add test coverage for all this
In gearCompression() when not on the ground, we now return with o_contact set
to the position of fully-extended gear, instead of (0, 0, 0) (the aircraft
origin).
This fixes later calculation of /position/gear-agl-ft, in particular it now
does not change discontinuously when leaving or touching the ground.
Make sure NavDataCachePrivate::findAllByString() calls loadById() after
the prepared SQL statement has been reset(), otherwise reentrant calls
to findAllByString() coming from loadById() are likely to fail as they
may reuse cached SQL statements. Such a reentrancy bug was introduced in
commit 351ca111ad because of the added call to FGAirport::findByIdent()
in XMLLoader::findAirportData().
Fixes issue: https://sourceforge.net/p/flightgear/codetickets/2858/
Canvas was using the default state set provided by an Effect.
This does not work if the Effect doesn't have a fixed-function
pipeline technique (like in the case of HDR and model-pbr).
In the future we should remove placements by texture name entirely
and use the node name together with a texture type (base color,
metallic, roughness) to identify the correct texture unit.
Previously we threw an exception if we encountered
and unknown row code in the apt.dat file.
However, the apt.dat files from X-Plane now include
codes that aren't yet in the 1200 specification (e.g.
105 for skid marks). So we will now print a warning and
ignore them.
Squashed commit of the following:
commit 9446789f881d676280819c20a42eb2454106cfba
Author: Stuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
Date: Tue Dec 19 16:51:37 2023 +0000
Add $FG_OVERRIDE_PAGER_THREADS to set load threads
Previously /sim/rendering/database-pager/threads was used to set
the number of OSG DatabasePager threads one reset (only!).
This change removes this function and replaces it with an
environmental variable FG_OVERRIDE_PAGER_THREADS which will
set the number of threads at startup and on reset.
This ensures that only developers who are interested in
multi-threading will enable it.
It is expected that one multi-threaded DatabasePagers stabilizes
we will change to use /sim/rendering/database-pager/threads
instead (for both init an reset).
commit 711b5bc6b8feff77d18309025a1c309a47398ff0
Author: Stuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
Date: Sun Dec 17 13:56:21 2023 +0000
Configure DatabasePager threads correctly
Previously we didn't set the number of DatabasePager
threads on initialization, and so irrespective of
the /sim/rendering/database-pager/threads property
we always had 1 General thread and 1 HTTP thread.
(On reset, we did have some code that set up the correct
number of threads).
This wasn't completely obvious, as the threads are configured
at startup using an OSG DisplaySettings hint.
This change sets up these threads correctly on initialization
and ties the properties properly. Though it's worth noting
that changing the property in-sim will have no effect until a
Reset.
The file now passes
flatpak run org.freedesktop.appstream.cli validate --strict --explain package/org.flightgear.FlightGear.metainfo.xml.in
except for the placeholders in the <release/> tag
As a student, I would like to be able to use the map for reading the flight plan, frequencies for VOR, NDB, ILS, but without giving away the position of my aircraft, so that I can train in IFR navigation using the instruments only in the cockpit.
Squashed commit of the following:
commit a4dd860660db64053fb75d251d58194b1aa99d51
Author: Stuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
Date: Thu Oct 26 20:33:48 2023 +0100
WS30 - Ground mesh material lookup
The default HUD still relies on legacy OpenGL features, which makes it
incompatible with the GL core profile. A replacement involving Canvas
has been discussed before, but for now a toggle switch is enough to test
the core profile.