]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIStorm.cxx
commradio: improvements for atis speech
[flightgear.git] / src / AIModel / AIStorm.cxx
index 51e79e31cc4b5795ac3f6a6d018b1bb4834ec1c9..e11411777f9493555b97be843f023e24754ca34e 100644 (file)
@@ -22,7 +22,6 @@
 #  include <config.h>
 #endif
 
-#include <simgear/math/point3d.hxx>
 #include <Main/fg_props.hxx>
 #include <Main/globals.hxx>
 #include <Scenery/scenery.hxx>
 #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;
@@ -74,8 +75,8 @@ void FGAIStorm::readFromScenario(SGPropertyNode* scFileNode) {
   setStrengthNorm(scFileNode->getDoubleValue("strength-norm", 1.0)); 
 }
 
-bool FGAIStorm::init() {
-   return FGAIBase::init();
+bool FGAIStorm::init(bool search_in_AI_path) {
+   return FGAIBase::init(search_in_AI_path);
 }
 
 void FGAIStorm::bind() {
@@ -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);