]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIAircraft.cxx
Support helipad names in the --runway startup option
[flightgear.git] / src / AIModel / AIAircraft.cxx
index eac696d1030e4ccb98f15bf0110025058ff29816..5e803ef5e159b81e6c3934a73c060f13ab96a16a 100644 (file)
 #include <simgear/structure/exception.hxx>
 
 #include <string>
-#include <math.h>
-#include <time.h>
-
-#ifdef _MSC_VER
-#  include <float.h>
-#  define finite _finite
-#elif defined(__sun) || defined(sgi)
-#  include <ieeefp.h>
-#endif
+#include <cmath>
+#include <ctime>
 
+// defined in AIShip.cxx
+extern double fgIsFinite(double x);
 
 #include "AIAircraft.hxx"
 #include "performancedata.hxx"
@@ -177,18 +172,12 @@ void FGAIAircraft::setPerformance(const std::string& acType, const std::string&
     // AI manager. In this particular case, the AIAircraft is used to shadow the user's aircraft's behavior in the AI world.
     // Since we perhaps don't want a radar entry of our own aircraft, the following conditional should probably be adequate
     // enough
-     if (manager)
+     if (manager){
         UpdateRadar(manager);
-     checkVisibility();
+       invisible = !manager->isVisible(pos);
+     }
   }
 
-void FGAIAircraft::checkVisibility() 
-{
-  double visibility_meters = fgGetDouble("/environment/visibility-m");
-  invisible = (SGGeodesy::distanceM(globals->get_view_position(), pos) > visibility_meters);
-}
-
-
 
 void FGAIAircraft::AccelTo(double speed) {
     tgt_speed = speed;
@@ -238,7 +227,8 @@ double FGAIAircraft::sign(double x) {
 void FGAIAircraft::setFlightPlan(const std::string& flightplan, bool repeat)
 {
     if (flightplan.empty()) {
-        SG_LOG(SG_AI, SG_WARN, "setFlightPlan: empty flight plan");
+        // this is the case for Nasal-scripted aircraft
+        return;
     }
     
     FGAIFlightPlan* fp = new FGAIFlightPlan(flightplan);
@@ -252,7 +242,8 @@ void FGAIAircraft::setFlightPlan(const std::string& flightplan, bool repeat)
 }
 
 
-void FGAIAircraft::SetFlightPlan(FGAIFlightPlan *f) {
+void FGAIAircraft::SetFlightPlan(FGAIFlightPlan *f)
+{
     delete fp;
     fp = f;
 }
@@ -943,7 +934,7 @@ void FGAIAircraft::controlHeading(FGAIWaypoint* curr) {
         SG_NORMALIZE_RANGE(calc_bearing, 0.0, 360.0);
     }
 
-    if (finite(calc_bearing)) {
+    if (fgIsFinite(calc_bearing)) {
         double hdg_error = calc_bearing - tgt_heading;
         if (fabs(hdg_error) > 0.01) {
             TurnTo( calc_bearing );