]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIStorm.cxx
apt.dat parser: clearer log and exception messages
[flightgear.git] / src / AIModel / AIStorm.cxx
index 2a99b2c312000b6c29637df1c5dd8376746e8be4..cbb4225ccd3367547c2d8161a064fd9c36f423f5 100644 (file)
 #  include <config.h>
 #endif
 
-#include <simgear/math/point3d.hxx>
 #include <Main/fg_props.hxx>
 #include <Main/globals.hxx>
 #include <Scenery/scenery.hxx>
 #include <string>
-#include <math.h>
+#include <cmath>
 #include <cstdlib>
 #include <time.h>
 
-SG_USING_STD(string);
+using std::string;
 
 #include "AIStorm.hxx"
 
 
-FGAIStorm::FGAIStorm() : FGAIBase(otStorm) {
+FGAIStorm::FGAIStorm() :
+   FGAIBase(otStorm, false)
+{
    delay = 3.6;
    subflashes = 1;
    timer = 0.0;
@@ -154,17 +155,11 @@ void FGAIStorm::Run(double dt) {
    // ***************************************************
 
    // copy user's position from the AIManager
-   double user_latitude  = manager->get_user_latitude();
-   double user_longitude = manager->get_user_longitude();
-   double user_altitude  = manager->get_user_altitude();
-
-   // calculate range to target in feet and nautical miles
-   double lat_range = fabs(pos.getLatitudeDeg() - user_latitude) * ft_per_deg_lat;
-   double lon_range = fabs(pos.getLongitudeDeg() - user_longitude) * ft_per_deg_lon;
-   double range_ft = sqrt(lat_range*lat_range + lon_range*lon_range);
-   range = range_ft / 6076.11549;
-
-   if (range < (diameter * 0.5) &&
+   double d = dist(SGVec3d::fromGeod(pos), globals->get_aircraft_position_cart());
+   double rangeNm =  d * SG_METER_TO_NM;
+   double user_altitude = globals->get_aircraft_position().getElevationFt();
+    
+   if (rangeNm < (diameter * 0.5) &&
        user_altitude > (altitude_ft - 1000.0) &&
        user_altitude < height) {
               turb_mag_node->setDoubleValue(strength_norm);