]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIManager.cxx
Merge branch 'merge-requests/1555' into next
[flightgear.git] / src / AIModel / AIManager.cxx
index 91ef652717e9cba4c7bdcb0f88fdcc3e322abc2c..731983f25dc710c4ced8042edbc7e1ebf4b85f13 100644 (file)
 #include "AIGroundVehicle.hxx"
 #include "AIEscort.hxx"
 
-FGAIManager::FGAIManager() {
+FGAIManager::FGAIManager() :
+    cb_ai_bare(SGPropertyChangeCallback<FGAIManager>(this,&FGAIManager::updateLOD,
+               fgGetNode("/sim/rendering/static-lod/ai-bare", true))),
+    cb_ai_detailed(SGPropertyChangeCallback<FGAIManager>(this,&FGAIManager::updateLOD,
+                   fgGetNode("/sim/rendering/static-lod/ai-detailed", true)))
+{
     _dt = 0.0;
     mNumAiModels = 0;
 
@@ -141,7 +146,7 @@ FGAIManager::update(double dt) {
     if (!enabled)
         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();
@@ -181,6 +186,18 @@ FGAIManager::update(double dt) {
     thermal_lift_node->setDoubleValue( strength );  // for thermals
 }
 
+/** update LOD settings of all AI/MP models */
+void
+FGAIManager::updateLOD(SGPropertyNode* node)
+{
+    ai_list_iterator ai_list_itr = ai_list.begin();
+    while(ai_list_itr != ai_list.end())
+    {
+        (*ai_list_itr)->updateLOD();
+        ++ai_list_itr;
+    }
+}
+
 void
 FGAIManager::attach(FGAIBase *model)
 {