This is a clean up commit prior to the subsystem API standardisation to simplify
the diffs. It includes all SGSubsystem and SGSubsystemGroup derived classes.
AIManager had unfortunate code to pass some state to the traffic-manager; this is no longer required since traffic schedules hold onto their AI-Aircraft directly as needed.
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.
Traffic Manager:
* Just continue routing until we run out of flights. This change removes one of the major requirements for setting the "Home port" field.
* Add a time restriction requirement for the aircraft scheduler; this became necessary after removing the limited-to-home-port routing restriction.
* Added a new field to the heuristics calculation: take into account whether an aircraft has already been used in a previous session. Rotate aircraft assignments for greater variability across sessions.
* Added a revision number to the cache files, so that old cache results, which are no longer compatible with the new file format, are discarded.
Groundnetwork and traffic control:
* Added a revision number to the cache files, so that old and incompatible results are discarded.
* The caching algorithm probably didn't store the correct data for airports that were processed while the user was quite far away. This is now corrected by checking whether the cached elevation data are equal to the generic airport elevation.
AIAircraft:
* I've been searching for the infamous aircraft bend-over-backward bug, that can occur during initialization, but to no avail yet. The only variable potentially responsible (tgt_vs) wich can explain the irregular jumping behavior, as well as the weird pitch results is initialized in AIAircraft's only constructor (through AIBase), and I can't find any situation in the ground handling code where this variable could get bizarre values. But,
* a couple of tgt_vs. calculations appear to be completely redundant. This value was calculated twice inside the ProcessFlightplan function, and subsequently again in the updateSecondaryTargetValues function. I have removed the calculations in the process flightplan function, without any apparent side effect.
- #248: new enable/disable-ai-traffic command-line option
- AI traffic: don't wait for METAR when real-wx-fetch disabled, to
enable AI traffic when running offline
--prop:/sim/traffic-manager/dumpdata=true: dumps the currently loaded datafile to the console for inspection.
--prop:/sim/traffic-manager/datafile=/path/to/somefile.xml: Skips autoscanning and reads traffic only from the specified xml file.
--prop:/sim/traffic-manager/datafile=/path/to/somefile.conf: Slips autoscanning and reads traffic from a plain text file, as described on the forum/wiki
* Removed the use of pointers for heuristics calculations, as urged by Frederic Bouvier
* Fixed domain error in proportion calculation during loading, resulting in random skipping of aircraft, as reported by Jorg van der Venne.
- Ground network slow-down finally works as expected
(although occasionally causing a traffic jam)
- Hold position instruction now really sets speed to zero, in addition
it actually works now for crossing and two-way traffic
- Attempt to limit execution time of ground network trace algorithm
to make performance acceptable at high-density networks
- Removed remaining terminal messages
- Various minor tweaks and clean-ups
- Moved AIModels/Traffic Manager related AI functions to a new file
- Rewrote the traffic manager so that the containers use pointers to
objects instead of the objects themselves, which will allow for a
more flexible memory management.
- Rewrote parts of the airport groundnetwork code, also because the
stl containers now contain object pointers instead of the objects
themselves.
- Fixed an uninitialized iterator in the AI distance tracking code
- Fixed flawed logic in some of the traffic controller's while loops
- Added a tower controller, which paces take-off behavior of AITraffic
in a more realistic way.
- Various other minor fixes and fine tuning.
work for ground based distance separation of AIAircraft.
Traffic manager initialization related changes:
- Schedules initialize "on the fly", instead of during initialization
- Invalid routes are no longer deleted, but marked as BOGUS and ignored
- Changed loading order from a distance based prioritization to a point-
score based prioritization, resulting in a much faster establisment of
AIAircraft near the user's plane.
Preparatory work for ground-based separation of Aircraft.
- The groundnetwork findShrortestRoute function not only returns a list
of waypoints, but also a list of taxi "segments" (a.k.a. taxiways).
- The taxiway list is stored in the Flightplan, and updated everytime
a new taxi leg is created.
I just heard from John Wojnaroski that you and he are going to work on getting
a flightgear demo machine up for the linux expo thursday and Friday. John
indicated that he would very much like to get a CVS version with the new
traffic code up and running before the expo.
Okay, here's the latest update to the tarffic manager/AI Manager. AITraffic
can now fly multiple routes and be initialized while sitting statically at
airports.