]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/UFO.cxx
Pull Sound-manager out of FGGlobals
[flightgear.git] / src / FDM / UFO.cxx
index 1ac7f9d7a055bc3a72808bb635fb77db621d6253..4a538e4e0193adb32def9d1c2eb7828475c22c36 100644 (file)
@@ -146,15 +146,15 @@ void FGUFO::update( double dt ) {
     double kts = velocity * SG_METER_TO_NM * 3600.0;
     _set_V_equiv_kts( kts );
     _set_V_calibrated_kts( kts );
-    _set_V_ground_speed( kts );
+    set_V_ground_speed_kt( kts );
 
     // angle of turn
     double turn_rate = sin(roll) * SGD_PI_4; // radians/sec
     double turn = turn_rate * time_step;
-    double yaw = fabs(rudder) < .2 ? 0.0 : rudder / (25 + fabs(speed) * .1);
+    double yaw = fabs(rudder) < .05 ? 0.0 : (rudder * (fabs(rudder) - 0.05) / 10);
 
     // update (lon/lat) position
-    double lat2, lon2, az2;
+    double lat2 = 0.0, lon2 = 0.0, az2 = 0.0;
     if ( fabs(speed) > SG_EPSILON ) {
         geo_direct_wgs_84 ( get_Altitude(),
                             get_Latitude() * SGD_RADIANS_TO_DEGREES,
@@ -162,8 +162,7 @@ void FGUFO::update( double dt ) {
                             get_Psi() * SGD_RADIANS_TO_DEGREES,
                             dist, &lat2, &lon2, &az2 );
 
-        _set_Longitude( lon2 * SGD_DEGREES_TO_RADIANS );
-        _set_Latitude( lat2 * SGD_DEGREES_TO_RADIANS );
+        _set_Geodetic_Position( lat2 * SGD_DEGREES_TO_RADIANS,  lon2 * SGD_DEGREES_TO_RADIANS );
     }
 
     // cout << "lon error = " << fabs(end.x()*SGD_RADIANS_TO_DEGREES - lon2)
@@ -174,7 +173,7 @@ void FGUFO::update( double dt ) {
     sgGeodToGeoc( get_Latitude(), get_Altitude(), &sl_radius, &lat_geoc );
 
     // update euler angles
-    double heading = fmod(get_Psi() + turn + yaw, SGD_2PI);
+    double heading = SGMiscd::normalizePeriodic(0, SGD_2PI, get_Psi() + turn + yaw );
     _set_Euler_Angles(roll, pitch, heading);
     _set_Euler_Rates(0,0,0);