]> git.mxchange.org Git - flightgear.git/commitdiff
#248: support enabling AI module at run-time
authorThorstenB <brehmt@gmail.com>
Mon, 30 Apr 2012 15:26:04 +0000 (17:26 +0200)
committerThorstenB <brehmt@gmail.com>
Mon, 30 Apr 2012 15:26:04 +0000 (17:26 +0200)
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.

src/AIModel/AIManager.cxx
src/AIModel/AIManager.hxx
src/MultiPlayer/multiplaymgr.cxx
src/Traffic/TrafficMgr.cxx

index d2232fc8498fe8567a4d6f56f40674be55426f25..7f7b5bab25c13b45b96adfe2d7aa290f916b8586 100644 (file)
@@ -69,10 +69,7 @@ void
 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);
@@ -143,7 +140,7 @@ FGAIManager::update(double dt) {
     range_nearest = 10000.0;
     strength = 0.0;
 
-    if (!enabled)
+    if (!enabled->getBoolValue())
         return;
 
     FGTrafficManager *tmgr = (FGTrafficManager*) globals->get_subsystem("traffic-manager");
index fad76a63d032f3b09c0940a9a1870aa7cbaf8f40..6bc175e76e9b9c9942deddbe1634489dc8acd3bd 100644 (file)
@@ -96,13 +96,13 @@ public:
 
 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;
index 8c7a8d7c5f3b94186d13592091d8424ebcee5444..f42d53432155c5440ea59aa0660924356fbbafd5 100644 (file)
@@ -408,9 +408,8 @@ FGMultiplayMgr::init (void)
 
   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);
   }
 
   //////////////////////////////////////////////////
index 9822bea6c28645cfbb48257946474c4dfe9ab3f9..a8426b80c34fb8c07b10318af6e2ac8eba0a98ea 100644 (file)
@@ -134,10 +134,16 @@ FGTrafficManager::~FGTrafficManager()
 
 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("")) {