]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIManager.cxx
Merge branches 'jmt/xmlauto', 'luff/kln89' and 'curt/radial'
[flightgear.git] / src / AIModel / AIManager.cxx
index aac54ab9bfd6f31c5079f63a84d2f70192241f76..9813b9dc25f768542f0378e344e5e2850d34c564 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <simgear/math/sg_geodesy.hxx>
 #include <simgear/props/props_io.hxx>
+#include <simgear/structure/exception.hxx>
 
 #include <Main/globals.hxx>
 
@@ -37,6 +38,7 @@
 #include "AIMultiplayer.hxx"
 #include "AITanker.hxx"
 #include "AIWingman.hxx"
+#include "AIGroundVehicle.hxx"
 
 FGAIManager::FGAIManager() {
     _dt = 0.0;
@@ -64,7 +66,7 @@ FGAIManager::init() {
     if (!enabled)
         return;
 
-    wind_from_down_node = fgGetNode("/environment/wind-from-down-fps", true);
+    thermal_lift_node = fgGetNode("/environment/thermal-lift-fps", true);
     wind_from_east_node  = fgGetNode("/environment/wind-from-east-fps",true);
     wind_from_north_node = fgGetNode("/environment/wind-from-north-fps",true);
 
@@ -96,7 +98,7 @@ FGAIManager::postinit() {
             continue;
         }
 
-        SG_LOG(SG_GENERAL, SG_INFO, "loading scenario '" << name << '\'');
+        SG_LOG(SG_GENERAL, SG_ALERT, "loading scenario '" << name << '\'');
         processScenario(name);
         scenarios[name] = true;
     }
@@ -171,7 +173,7 @@ FGAIManager::update(double dt) {
         }
     }
 
-    wind_from_down_node->setDoubleValue( strength ); // for thermals
+    thermal_lift_node->setDoubleValue( strength );  // for thermals
 }
 
 void
@@ -257,6 +259,8 @@ FGAIManager::processThermal( FGAIThermal* thermal ) {
 
 }
 
+
+
 void
 FGAIManager::processScenario( const string &filename ) {
 
@@ -277,8 +281,8 @@ FGAIManager::processScenario( const string &filename ) {
             continue;
         std::string type = scEntry->getStringValue("type", "aircraft");
 
-         if (type == "tanker") { // refueling scenarios
-           FGAITanker* tanker = new FGAITanker;
+        if (type == "tanker") { // refueling scenarios
+            FGAITanker* tanker = new FGAITanker;
             tanker->readFromScenario(scEntry);
             attach(tanker);
 
@@ -287,7 +291,7 @@ FGAIManager::processScenario( const string &filename ) {
             wingman->readFromScenario(scEntry);
             attach(wingman);
 
-    } else if (type == "aircraft") {
+        } else if (type == "aircraft") {
             FGAIAircraft* aircraft = new FGAIAircraft;
             aircraft->readFromScenario(scEntry);
             attach(aircraft);
@@ -302,6 +306,11 @@ FGAIManager::processScenario( const string &filename ) {
             carrier->readFromScenario(scEntry);
             attach(carrier);
 
+        } else if (type == "groundvehicle") {
+            FGAIGroundVehicle* groundvehicle = new FGAIGroundVehicle;
+            groundvehicle->readFromScenario(scEntry);
+            attach(groundvehicle);
+
         } else if (type == "thunderstorm") {
             FGAIStorm* storm = new FGAIStorm;
             storm->readFromScenario(scEntry);
@@ -321,9 +330,10 @@ FGAIManager::processScenario( const string &filename ) {
             FGAIStatic* aistatic = new FGAIStatic;
             aistatic->readFromScenario(scEntry);
             attach(aistatic);
-
         }
+
     }
+
 }
 
 SGPropertyNode_ptr
@@ -385,9 +395,8 @@ const FGAIBase *
 FGAIManager::calcCollision(double alt, double lat, double lon, double fuse_range)
 {
     // we specify tgt extent (ft) according to the AIObject type
-    double tgt_ht[]     = {0, 50 ,100, 250, 0, 100, 0, 0, 50, 50};
-    double tgt_length[] = {0, 100, 200, 750, 0, 50, 0, 0, 200, 100};
-
+    double tgt_ht[]     = {0, 50 ,100, 250, 0, 100, 0, 0, 50, 50, 50};
+    double tgt_length[] = {0, 100, 200, 750, 0, 50, 0, 0, 200, 100, 100};
     ai_list_iterator ai_list_itr = ai_list.begin();
     ai_list_iterator end = ai_list.end();
 
@@ -397,14 +406,14 @@ FGAIManager::calcCollision(double alt, double lat, double lon, double fuse_range
         tgt_ht[type] += fuse_range;
 
         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 "
-                << fabs(tgt_alt - alt)
-                << " "
-                << type
-                );
-            ++ai_list_itr;
-            continue;
+            || type == FGAIBase::otStorm || type == FGAIBase::otThermal ) {
+                SG_LOG(SG_GENERAL, SG_DEBUG, "AIManager: skipping "
+                    << fabs(tgt_alt - alt)
+                    << " "
+                    << type
+                    );
+                ++ai_list_itr;
+                continue;
         }
 
         double tgt_lat = (*ai_list_itr)->_getLatitude();