]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/flight.cxx
Provide a better(?) solution to the windows GDI problem
[flightgear.git] / src / FDM / flight.cxx
index a90f0791f3da51ffecb0a042cc896037e878162d..1f9d650c0baefef20daad16a0f87dbd774338d40 100644 (file)
 #include <simgear/constants.h>
 #include <simgear/debug/logstream.hxx>
 #include <simgear/math/sg_geodesy.hxx>
+#include <simgear/scene/model/location.hxx>
+#include <simgear/scene/model/placement.hxx>
 #include <simgear/timing/timestamp.hxx>
 
 #include <Scenery/scenery.hxx>
 #include <FDM/LaRCsim/ls_interface.h>
 #include <Main/globals.hxx>
 #include <Main/fg_props.hxx>
-#include <Main/location.hxx>
-#include <Model/model.hxx>
 #include <Model/acmodel.hxx>
 
 #include "flight.hxx"
@@ -201,7 +201,7 @@ FGInterface::common_init ()
                   * SGD_DEGREES_TO_RADIANS );
     double ground_elev_m = globals->get_scenery()->get_cur_elev();
     double ground_elev_ft = ground_elev_m * SG_METER_TO_FEET;
-    _acmodel->get3DModel()->getFGLocation()->set_cur_elev_m( ground_elev_m );
+    _acmodel->get3DModel()->getSGLocation()->set_cur_elev_m( ground_elev_m );
     _set_Runway_altitude ( ground_elev_ft );
     if ( fgGetBool("/sim/presets/onground")
          || fgGetDouble("/sim/presets/altitude-ft") < ground_elev_ft ) {
@@ -339,6 +339,12 @@ FGInterface::bind ()
   fgTie("/velocities/airspeed-kt", this,
        &FGInterface::get_V_calibrated_kts,
        &FGInterface::set_V_calibrated_kts,
+       false);
+
+                               // Mach number
+  fgTie("/velocities/mach", this,
+       &FGInterface::get_Mach_number,
+       &FGInterface::set_Mach_number,
        false);
 
                                // Local velocities
@@ -391,21 +397,29 @@ FGInterface::bind ()
   fgTie("/velocities/glideslope", this,
   &FGInterface::get_Gamma_vert_rad,
   &FGInterface::set_Gamma_vert_rad );
-  fgTie("/velocities/side-slip-rad", this,
+  fgTie("/orientation/side-slip-rad", this,
        &FGInterface::get_Beta); // read-only
-  fgTie("/velocities/side-slip-deg", this,
+  fgTie("/orientation/side-slip-deg", this,
   &FGInterface::get_Beta_deg); // read-only
-  fgTie("/velocities/alpha-deg", this,
+  fgTie("/orientation/alpha-deg", this,
   &FGInterface::get_Alpha_deg); // read-only
   fgTie("/accelerations/nlf", this,
   &FGInterface::get_Nlf); // read-only
 
+                                // NED accelerations
+  fgTie("/accelerations/ned/north-accel-fps_sec",
+        this, &FGInterface::get_V_dot_north);
+  fgTie("/accelerations/ned/east-accel-fps_sec",
+        this, &FGInterface::get_V_dot_east);
+  fgTie("/accelerations/ned/down-accel-fps_sec",
+        this, &FGInterface::get_V_dot_down);
+
                                 // Pilot accelerations
-  fgTie("/accelerations/pilot/x-accel-ft_sec2",
+  fgTie("/accelerations/pilot/x-accel-fps_sec",
         this, &FGInterface::get_A_X_pilot);
-  fgTie("/accelerations/pilot/y-accel-ft_sec2",
+  fgTie("/accelerations/pilot/y-accel-fps_sec",
         this, &FGInterface::get_A_Y_pilot);
-  fgTie("/accelerations/pilot/z-accel-ft_sec2",
+  fgTie("/accelerations/pilot/z-accel-fps_sec",
         this, &FGInterface::get_A_Z_pilot);
 
 }
@@ -422,10 +436,10 @@ FGInterface::unbind ()
 {
   bound = false;
 
-  fgUntie("/fdm/time/delta_t");
-  fgUntie("/fdm/time/elapsed");
-  fgUntie("/fdm/time/remainder");
-  fgUntie("/fdm/time/multi_loop");
+  // fgUntie("/fdm/time/delta_t");
+  // fgUntie("/fdm/time/elapsed");
+  // fgUntie("/fdm/time/remainder");
+  // fgUntie("/fdm/time/multi_loop");
   fgUntie("/position/latitude-deg");
   fgUntie("/position/longitude-deg");
   fgUntie("/position/altitude-ft");
@@ -433,7 +447,14 @@ FGInterface::unbind ()
   fgUntie("/orientation/roll-deg");
   fgUntie("/orientation/pitch-deg");
   fgUntie("/orientation/heading-deg");
+  fgUntie("/orientation/roll-rate-degps");
+  fgUntie("/orientation/pitch-rate-degps");
+  fgUntie("/orientation/yaw-rate-degps");
+  fgUntie("/orientation/side-slip-rad");
+  fgUntie("/orientation/side-slip-deg");
+  fgUntie("/orientation/alpha-deg");
   fgUntie("/velocities/airspeed-kt");
+  fgUntie("/velocities/mach");
   fgUntie("/velocities/speed-north-fps");
   fgUntie("/velocities/speed-east-fps");
   fgUntie("/velocities/speed-down-fps");
@@ -442,13 +463,13 @@ FGInterface::unbind ()
   fgUntie("/velocities/wBody-fps");
   fgUntie("/velocities/vertical-speed-fps");
   fgUntie("/velocities/glideslope");
-  fgUntie("/velocities/side-slip-rad");
-  fgUntie("/velocities/side-slip-deg");
-  fgUntie("/velocities/alpha-deg");
   fgUntie("/accelerations/nlf");
   fgUntie("/accelerations/pilot/x-accel-fps_sec");
   fgUntie("/accelerations/pilot/y-accel-fps_sec");
   fgUntie("/accelerations/pilot/z-accel-fps_sec");
+  fgUntie("/accelerations/ned/north-accel-fps_sec");
+  fgUntie("/accelerations/ned/east-accel-fps_sec");
+  fgUntie("/accelerations/ned/down-accel-fps_sec");
 }
 
 /**
@@ -482,7 +503,9 @@ void FGInterface::_updateGeodeticPosition( double lat, double lon, double alt )
     _set_Geodetic_Position( lat, lon, alt );
 
     _set_Sea_level_radius( sl_radius * SG_METER_TO_FEET );
-    _set_Runway_altitude( getACModel()->get3DModel()->getFGLocation()->get_cur_elev_m() * SG_METER_TO_FEET );
+    if ( getACModel() != NULL ) {
+        _set_Runway_altitude( getACModel()->get3DModel()->getSGLocation()->get_cur_elev_m() * SG_METER_TO_FEET );
+    }
 
     _set_sin_lat_geocentric( lat_geoc );
     _set_cos_lat_geocentric( lat_geoc );
@@ -538,7 +561,7 @@ void FGInterface::_updateGeocentricPosition( double lat_geoc, double lon,
     _set_Geodetic_Position( lat_geod, lon, alt );
 
     _set_Sea_level_radius( sl_radius2 * SG_METER_TO_FEET );
-    _set_Runway_altitude( getACModel()->get3DModel()->getFGLocation()->get_cur_elev_m() * SG_METER_TO_FEET );
+    _set_Runway_altitude( getACModel()->get3DModel()->getSGLocation()->get_cur_elev_m() * SG_METER_TO_FEET );
 
     _set_sin_lat_geocentric( lat_geoc );
     _set_cos_lat_geocentric( lat_geoc );