X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FTraffic%2FTrafficMgr.cxx;h=9ebf78c1c7c063e80ba68352d1d4073131d4a3a8;hb=63708fb0df81a357173499d0c1950525f387db44;hp=d9fcb6fffcf2254d62113872e4770b5e319797ea;hpb=f2a817d1370cde5a94474344a65bacb2f7845352;p=flightgear.git diff --git a/src/Traffic/TrafficMgr.cxx b/src/Traffic/TrafficMgr.cxx index d9fcb6fff..9ebf78c1c 100644 --- a/src/Traffic/TrafficMgr.cxx +++ b/src/Traffic/TrafficMgr.cxx @@ -75,7 +75,12 @@ using std::strcmp; /****************************************************************************** * 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; @@ -125,6 +130,10 @@ FGTrafficManager::~FGTrafficManager() void FGTrafficManager::init() { + if (!enabled || !aiEnabled) { + return; + } + heuristicsVector heuristics; HeuristicMap heurMap; @@ -218,13 +227,22 @@ void FGTrafficManager::init() 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; @@ -240,6 +258,7 @@ void FGTrafficManager::update(double /*dt */ ) } //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