Also adapt MP and traffic module to enable the AI module when required.
This makes /sim/ai/enabled an internal property: it can default to false
(in future), and can be enabled as soon as any user-level feature (traffic,
MP, local weather, ...) requires it.
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);
range_nearest = 10000.0;
strength = 0.0;
- if (!enabled)
+ if (!enabled->getBoolValue())
return;
FGTrafficManager *tmgr = (FGTrafficManager*) globals->get_subsystem("traffic-manager");
private:
- bool enabled;
int mNumAiTypeModels[FGAIBase::MAX_OBJECTS];
int mNumAiModels;
double calcRange(double lat, double lon, double lat2, double lon2)const;
SGPropertyNode_ptr root;
+ SGPropertyNode_ptr enabled;
SGPropertyNode_ptr thermal_lift_node;
SGPropertyNode_ptr user_latitude_node;
SGPropertyNode_ptr user_longitude_node;
if (!fgGetBool("/sim/ai/enabled"))
{
- SG_LOG(SG_NETWORK, SG_ALERT,
- "Cannot enable multiplayer mode: AI subsystem is disabled (to enable start with '--enable-ai-models').");
- return;
+ // multiplayer depends on AI module
+ fgSetBool("/sim/ai/enabled", true);
}
//////////////////////////////////////////////////
void FGTrafficManager::init()
{
- if (!enabled || !aiEnabled) {
+ if (!enabled) {
return;
}
+ if (!aiEnabled)
+ {
+ // traffic depends on AI module
+ aiEnabled = true;
+ }
+
assert(!doingInit);
doingInit = true;
if (string(fgGetString("/sim/traffic-manager/datafile")) == string("")) {