FGAIManager::init() {
root = fgGetNode("sim/ai", true);
- enabled = root->getNode("enabled", true)->getBoolValue();
-
- if (!enabled)
- return;
+ enabled = root->getNode("enabled", true);
thermal_lift_node = fgGetNode("/environment/thermal-lift-fps", true);
wind_from_east_node = fgGetNode("/environment/wind-from-east-fps",true);
void
FGAIManager::postinit() {
// postinit, so that it can access the Nasal subsystem
+
+ if (!root->getBoolValue("scenarios-enabled", true))
+ return;
+
+ // scenarios enabled, AI subsystem required
+ if (!enabled->getBoolValue())
+ enabled->setBoolValue(true);
+
+ // process all scenarios
map<string, bool> scenarios;
for (int i = 0 ; i < root->nChildren() ; i++) {
SGPropertyNode *n = root->getChild(i);
continue;
if (scenarios.find(name) != scenarios.end()) {
- SG_LOG(SG_GENERAL, SG_DEBUG, "won't load scenario '" << name << "' twice");
+ SG_LOG(SG_AI, SG_DEBUG, "won't load scenario '" << name << "' twice");
continue;
}
- SG_LOG(SG_GENERAL, SG_ALERT, "loading scenario '" << name << '\'');
+ SG_LOG(SG_AI, SG_ALERT, "loading scenario '" << name << '\'');
processScenario(name);
scenarios[name] = true;
}
range_nearest = 10000.0;
strength = 0.0;
- if (!enabled)
+ if (!enabled->getBoolValue())
return;
- FGTrafficManager *tmgr = (FGTrafficManager*) globals->get_subsystem("Traffic Manager");
+ FGTrafficManager *tmgr = (FGTrafficManager*) globals->get_subsystem("traffic-manager");
_dt = dt;
ai_list_iterator ai_list_itr = ai_list.begin();
readProperties(path.str(), root);
return root;
} catch (const sg_exception &t) {
- SG_LOG(SG_GENERAL, SG_ALERT, "Failed to load scenario '"
+ SG_LOG(SG_AI, SG_ALERT, "Failed to load scenario '"
<< path.str() << "': " << t.getFormattedMessage());
return 0;
}
if (fabs(tgt_alt - alt) > tgt_ht[type] || type == FGAIBase::otBallistic
|| type == FGAIBase::otStorm || type == FGAIBase::otThermal ) {
- //SG_LOG(SG_GENERAL, SG_DEBUG, "AIManager: skipping "
+ //SG_LOG(SG_AI, SG_DEBUG, "AIManager: skipping "
// << fabs(tgt_alt - alt)
// << " "
// << type
double range = calcRange(lat, lon, tgt_lat, tgt_lon);
- //SG_LOG(SG_GENERAL, SG_DEBUG, "AIManager: AI list size "
+ //SG_LOG(SG_AI, SG_DEBUG, "AIManager: AI list size "
// << ai_list.size()
// << " type " << type
// << " ID " << id
tgt_length[type] += fuse_range;
if (range < tgt_length[type]){
- SG_LOG(SG_GENERAL, SG_DEBUG, "AIManager: HIT! "
+ SG_LOG(SG_AI, SG_DEBUG, "AIManager: HIT! "
<< " type " << type
<< " ID " << id
<< " range " << range