/******************************************************************************
* TrafficManager
*****************************************************************************/
-FGTrafficManager::FGTrafficManager()
+FGTrafficManager::FGTrafficManager() :
+ inited(false),
+ enabled("/sim/traffic-manager/enabled"),
+ aiEnabled("/sim/ai/enabled"),
+ realWxEnabled("/environment/realwx/enabled"),
+ metarValid("/environment/metar/valid")
{
//score = 0;
//runCount = 0;
void FGTrafficManager::init()
{
+ if (!enabled || !aiEnabled) {
+ return;
+ }
+
heuristicsVector heuristics;
HeuristicMap heurMap;
compareSchedules);
currAircraft = scheduledAircraft.begin();
currAircraftClosest = scheduledAircraft.begin();
+
+ inited = true;
}
void FGTrafficManager::update(double /*dt */ )
{
- if (fgGetBool("/environment/metar/valid") == false) {
+ if (!enabled || !aiEnabled || (realWxEnabled && !metarValid)) {
return;
}
+
+ if (!inited) {
+ // lazy-initialization, we've been enabled at run-time
+ SG_LOG(SG_GENERAL, SG_INFO, "doing lazy-init of TrafficManager");
+ init();
+ }
+
time_t now = time(NULL) + fgGetLong("/sim/time/warp");
if (scheduledAircraft.size() == 0) {
return;
}
//cerr << "Processing << " << (*currAircraft)->getRegistration() << " with score " << (*currAircraft)->getScore() << endl;
if (!((*currAircraft)->update(now, userCart))) {
+ (*currAircraft)->taint();
// NOTE: With traffic manager II, this statement below is no longer true
// after proper initialization, we shouldnt get here.
// But let's make sure