ThorstenB [Sat, 13 Oct 2012 14:48:56 +0000 (16:48 +0200)]
ATIS upgrade
Add missing ATIS elements (transition level, expected approach,
precipitation, runway surface warnings).
Minor phraseology fixes for US/Europe.
Adds "/sim/atis/concise-report" option to use abbreviations (CAVOK etc),
and omit "obvious" units (depends on airport).
Trigger ATIS updates for significant pressure changes.
ThorstenB [Sat, 13 Oct 2012 12:37:47 +0000 (14:37 +0200)]
ATCVoice: support multiple voice files
so we can split ATIS voice files into separate files, i.e. for airport
names and phraseology, so we don't need to regenerate airport names when
extending/changing phraseology. Also allows to add custom airport names.
Enable switching voice files at run-time (different airports could have
different voices...).
ThorstenB [Wed, 10 Oct 2012 18:28:17 +0000 (20:28 +0200)]
#897: float vs double precision issues (frequency dialog not always working)
puObject only provides float, not double, which causes precision/rounding
issues with some numerical values (try "114.2").
Work around: obtain string value, and manually convert with proper double
precision.
ThorstenB [Sun, 7 Oct 2012 18:47:50 +0000 (20:47 +0200)]
Improve gyro heading indicator failure simulation
Error/offset induced by precession and yaw also depend on spin (no spin =>
no additional error/offset).
Error/offset induced by changing a/c orientation while gyro spin is
low (<<1) should apply to the "offset" (instead of "error") property.
James Turner [Fri, 5 Oct 2012 17:12:46 +0000 (18:12 +0100)]
Make traffic take-off roll look a little better.
Expand the performance DB logic to support aliases, and select based on aircraft type as well as class. This allows to introduce some variation into AI traffic performance. Change the initial climb-out waypoints to use pitch-hold until passing 3000', which looks much more convincing
James Turner [Mon, 1 Oct 2012 08:21:34 +0000 (09:21 +0100)]
Use a helper thread to init the traffic-manager.
Make traffic manager startup asynchronous, but also avoid frame-stutter due to file parsing on the main thread. Note only XML parsing happens on a thread - once that's complete, everything happens as normal on the main thread, as before.
James Turner [Mon, 1 Oct 2012 12:06:28 +0000 (13:06 +0100)]
Run the filters for comm/navaids as required.
Apparently most filters are only filtering on type - we weren't running the filter body for navaid or comm-station lookups, causing weird ATIS bugs. Ensure that we actually run the filter at the point we have an FGPositioned* result.
James Turner [Sun, 30 Sep 2012 18:40:08 +0000 (19:40 +0100)]
Tolerate refactored SGSound headers.
An upcoming commit will make the sound headers standalone, and no longer include various other headers / using std:: declarations. Prepare for this by making includes and usage of namespaces explicit.
James Turner [Sun, 30 Sep 2012 15:34:51 +0000 (16:34 +0100)]
Initial work on dynamic subsystem creation.
Make subsystems create-able and removable from commands. Only some subsystems are supported so far, since many have non-default constructors or other complexities.
With this, change, it's possible to dynamically add and remove the traffic-manager at runtime, for example: fgcommand("add-subsystem", props.Node.new({ "subsystem": "traffic-manager", "name":"traffic-manager", "do-bind-init":1}));
James Turner [Sat, 29 Sep 2012 18:02:03 +0000 (19:02 +0100)]
Support a --no-default-config option.
For (future) easier testing of the sim, support a mode where only explicitly named config / option files are loaded, instead of the default ones. (Including, for example, preferences.xml). This currently produces a non-functional sim, but will soon be more useful :)
No behaviour should change unless you try the new option.
James Turner [Fri, 28 Sep 2012 14:32:31 +0000 (15:32 +0100)]
Make FGControls behave like normal subsystem.
FGControls create/init/bind order was incorrect, causing initial property tree state to get over-written. Restructure the code so bind() sees correct values.
Thomas Geymayer [Thu, 27 Sep 2012 10:21:22 +0000 (12:21 +0200)]
Fix some CommStation bugs
- kHz/mHz conversion needs factor 1000 not 100
- Correctly read name for CommStations from NavCache
- Fix parsing CommStation names from apt.dat (Name
can contain spaces)
James Turner [Thu, 27 Sep 2012 08:27:48 +0000 (09:27 +0100)]
#793 - invalid data on final FP leg.
The Flight-plan leg data computation was omitting certain data for the final waypoint, which in turn made some of the route-manager data bogus when flying the final leg. Fill in some sensible values which we can compute.
Thomas Geymayer [Wed, 26 Sep 2012 22:41:23 +0000 (00:41 +0200)]
Fix ATIS /environment/attention handling
Using a tied property works only for one single usage of the
property. In reality FGATIS is normally instantiated four
times (nav/comm/1/2) where only the first instantiation
works correctly. All subsequent instantions fail to tie
and show some error messages.
Also tied properties shouldn't be used anymore.
Thomas Geymayer [Tue, 25 Sep 2012 21:06:27 +0000 (23:06 +0200)]
Canvas: Proper fix for OpenVG init handling.
- Redraw all canvases in the frame OpenVG is initialized.
Otherwise if multiple canvases are created in the same frame
only one of them would get correctly updated.
Thomas Geymayer [Tue, 25 Sep 2012 19:34:37 +0000 (21:34 +0200)]
Canvas: Redraw if OpenVG has been initialized.
If OpenVG/ShivaVG is initialized nothing is drawn in the same
frame, therefore we need to draw another frame to ensure all
paths are rendered correctly.
James Turner [Tue, 25 Sep 2012 16:24:12 +0000 (17:24 +0100)]
Use a helper thread to rebuild the navcache.
Avoid the application becoming unresponsive during nav-cache rebuilds. We still have to wait for the rebuild, but perform it on a helper thread so the main GUI thread stays responsive and hence doesn't trigger a beach-ball / 'not responding' alert. Also ensures there's some feedback (the spinner) during the rebuild operation, so users don't think we've hung.
James Turner [Mon, 24 Sep 2012 23:31:17 +0000 (00:31 +0100)]
Make FGTaxiNode and FGParking inherit FGPositioned.
In preparation for caching the groundnet in the NavCache, make taxi-nodes and parkings inherit from FGPositioned. As part of this, make them heap (as opposed to value) classes, disable their copy-constructors, remove many mutating operations, and give them real constructors.
Fix compilation with enabled EVENT_INPUT
Need to move the definition to the toplevel cmake file, since sources
are no longer compiled on directory level (individual libs per dir).
Thomas Geymayer [Fri, 21 Sep 2012 19:20:35 +0000 (21:20 +0200)]
Canvas: Performance improvements.
- Only render the canvas if something has actually changed
(Currently checked by looking for modified properties).
- Only write bounding box to property tree if it has been
recalculated (until now this happened every frame).
gyro heading indicator: realism when spin is low
Low spin or switched off gyros result in the indicator being stuck.
When the gyros are repowered, the indication doesn't jump to the correct
indication, but keeps the current error.
Allow instruments/systems to reset on sim reset
so they can instantly adjust to the changed environment.
(Not fully working yet, since some environment settings, like environemnt
pressure/temperature, still changes slowly after a sim reset - instead of
immediately jumping to the new setting. Also, METAR sometimes arrives too
late...).
James Turner [Wed, 19 Sep 2012 17:40:34 +0000 (18:40 +0100)]
Expose the route-path of leg to Nasal.
In advance of converting the Map and NavDisplay to use the canvas, expose the full route-path vector for each flight plan leg, as a vector on the leg. Use leg.path() to get this.
E.g.:
var fp = flightplan();
for (var i=0; i<fp.getPlanSize(); i += 1)
{
var leg = fp.getWP(i);
debug.dump(leg.path());
}
James Turner [Wed, 19 Sep 2012 17:17:44 +0000 (18:17 +0100)]
Kill off some globals.
Break some subsystem dependencies, by explicitly using properties to read the primary position, orientation and velocities. (Instead of directly accessing the primary model placement). This means a couple more globals can die.