]> git.mxchange.org Git - flightgear.git/blobdiff - src/Cockpit/cockpit.cxx
Set the key SGModelLib callback to make aircraft-dir OSG loading work.
[flightgear.git] / src / Cockpit / cockpit.cxx
index 0414a0f6a0ae4fb0a15f3cde660c52bde07fbed4..54ccd2a232706f45fe8f8fa8d7a25a1e86f718f2 100644 (file)
 #include <simgear/props/props.hxx>
 #include <simgear/timing/sg_time.hxx>
 
-#include <Aircraft/aircraft.hxx>
 #include <Include/general.hxx>
-#ifdef ENABLE_SP_FDM
-#include <FDM/SP/ADA.hxx>
-#endif
+
 #include <Main/globals.hxx>
 #include <Main/fg_props.hxx>
 #include <Main/viewmgr.hxx>
@@ -51,7 +48,6 @@
 #include "cockpit.hxx"
 #include "hud.hxx"
 
-
 // The following routines obtain information concerntin the aircraft's
 // current state and return it to calling instrument display routines.
 // They should eventually be member functions of the aircraft.
 
 float get_latitude( void )
 {
-    return current_aircraft.fdm_state->get_Latitude() * SGD_RADIANS_TO_DEGREES;
+    return fgGetDouble("/position/latitude-deg");
 }
 
 float get_lat_min( void )
 {
     double a, d;
 
-    a = current_aircraft.fdm_state->get_Latitude() * SGD_RADIANS_TO_DEGREES;
+    a = fgGetDouble("/position/latitude-deg");
     if (a < 0.0) {
         a = -a;
     }
@@ -79,7 +75,7 @@ float get_lat_min( void )
 
 float get_longitude( void )
 {
-    return current_aircraft.fdm_state->get_Longitude() * SGD_RADIANS_TO_DEGREES;
+    return fgGetDouble("/position/longitude-deg");
 }
 
 
@@ -99,7 +95,7 @@ get_formated_gmt_time( void )
 float get_long_min( void )
 {
     double  a, d;
-    a = current_aircraft.fdm_state->get_Longitude() * SGD_RADIANS_TO_DEGREES;
+    a = fgGetDouble("/position/longitude-deg");
     if (a < 0.0) {
         a = -a;
     }
@@ -139,7 +135,7 @@ float get_speed( void )
 {
     static const SGPropertyNode * speedup_node = fgGetNode("/sim/speed-up");
 
-    float speed = current_aircraft.fdm_state->get_V_calibrated_kts()
+    float speed = fgGetDouble("/velocities/airspeed-kt")
         * speedup_node->getIntValue();
 
     return speed;
@@ -147,27 +143,27 @@ float get_speed( void )
 
 float get_mach(void)
 {
-    return current_aircraft.fdm_state->get_Mach_number();
+    return fgGetDouble("/velocities/mach");
 }
 
 float get_aoa( void )
 {
-    return current_aircraft.fdm_state->get_Alpha() * SGD_RADIANS_TO_DEGREES;
+    return fgGetDouble("/orientation/alpha-deg");
 }
 
 float get_roll( void )
 {
-    return current_aircraft.fdm_state->get_Phi();
+    return fgGetDouble("/orientation/roll-deg") * SG_DEGREES_TO_RADIANS;
 }
 
 float get_pitch( void )
 {
-    return current_aircraft.fdm_state->get_Theta();
+    return fgGetDouble("/orientation/pitch-deg") * SG_DEGREES_TO_RADIANS;
 }
 
 float get_heading( void )
 {
-    return current_aircraft.fdm_state->get_Psi() * SGD_RADIANS_TO_DEGREES;
+    return fgGetDouble("/orientation/heading-deg");
 }
 
 float get_altitude( void )
@@ -175,16 +171,11 @@ float get_altitude( void )
     static const SGPropertyNode *startup_units_node
         = fgGetNode("/sim/startup/units");
 
-    float altitude;
-
     if ( !strcmp(startup_units_node->getStringValue(), "feet") ) {
-        altitude = current_aircraft.fdm_state->get_Altitude();
+        return fgGetDouble("/position/altitude-ft");
     } else {
-        altitude = (current_aircraft.fdm_state->get_Altitude()
-                    * SG_FEET_TO_METER);
+        return fgGetDouble("/position/altitude-ft") * SG_FEET_TO_METER;
     }
-
-    return altitude;
 }
 
 float get_agl( void )
@@ -192,22 +183,16 @@ float get_agl( void )
     static const SGPropertyNode *startup_units_node
         = fgGetNode("/sim/startup/units");
 
-    float agl;
-
     if ( !strcmp(startup_units_node->getStringValue(), "feet") ) {
-        agl = (current_aircraft.fdm_state->get_Altitude()
-               - current_aircraft.fdm_state->get_Runway_altitude());
+        return fgGetDouble("/position/altitude-agl-ft");
     } else {
-        agl = (current_aircraft.fdm_state->get_Altitude()
-               - current_aircraft.fdm_state->get_Runway_altitude()) * SG_FEET_TO_METER;
+        return fgGetDouble("/position/altitude-agl-ft") * SG_FEET_TO_METER;
     }
-
-    return agl;
 }
 
 float get_sideslip( void )
 {
-    return current_aircraft.fdm_state->get_Beta();
+    return fgGetDouble("/orientation/side-slip-rad");
 }
 
 float get_frame_rate( void )
@@ -246,11 +231,11 @@ float get_climb_rate( void )
     static const SGPropertyNode *startup_units_node
         = fgGetNode("/sim/startup/units");
 
-    float climb_rate;
+    float climb_rate = fgGetDouble("/velocities/vertical-speed-fps", 0.0);
     if ( !strcmp(startup_units_node->getStringValue(), "feet") ) {
-        climb_rate = current_aircraft.fdm_state->get_Climb_Rate() * 60.0;
+        climb_rate *= 60.0;
     } else {
-        climb_rate = current_aircraft.fdm_state->get_Climb_Rate() * SG_FEET_TO_METER * 60.0;
+        climb_rate *= SG_FEET_TO_METER * 60.0;
     }
 
     return climb_rate;
@@ -259,15 +244,8 @@ float get_climb_rate( void )
 
 float get_view_direction( void )
 {
-    double view_off = SGD_2PI - globals->get_current_view()->getHeadingOffset_deg() * SGD_DEGREES_TO_RADIANS;
-    double view = ( current_aircraft.fdm_state->get_Psi() + view_off)
-        * SGD_RADIANS_TO_DEGREES;
-
-    if (view > 360.)
-        view -= 360.;
-    else if (view<0.)
-        view += 360.;
-
+    double view_off = 360.0 - globals->get_current_view()->getHeadingOffset_deg();
+    double view = SGMiscd::normalizeAngle(fgGetDouble("/orientation/heading-deg") + view_off);
     return view;
 }
 
@@ -280,240 +258,108 @@ float get_dme( void )
     return dme_node->getFloatValue();
 }
 
-// $$$ begin - added, VS Renganathan 13 Oct 2K
-// #ifdef FIGHTER_HUD
-float get_Vx   ( void )
-{
-    // Curt dont comment this and return zero. - Ranga
-    // Please remove comments from get_V_..() function in flight.hxx
-    float Vxx = current_aircraft.fdm_state->get_V_north_rel_ground();
-    return Vxx;
-}
-
-float get_Vy   ( void )
-{
-    // Curt dont comment this and return zero. - Ranga
-    // Please remove comments from get_V_..() function in flight.hxx
-    float Vyy = current_aircraft.fdm_state->get_V_east_rel_ground();
-    return Vyy;
-}
-
-float get_Vz   ( void )
-{
-    // Curt dont comment this and return zero. - Ranga
-    // Please remove comments from get_V_..() function in flight.hxx
-    float Vzz = current_aircraft.fdm_state->get_V_down_rel_ground();
-    return Vzz;
-}
-
 float get_Ax   ( void )
 {
-    float Ax = current_aircraft.fdm_state->get_V_dot_north();
-    return Ax;
-}
-
-float get_Ay   ( void )
-{
-    float Ay = current_aircraft.fdm_state->get_V_dot_east();
-    return Ay;
-}
-
-float get_Az   ( void )
-{
-    float Az = current_aircraft.fdm_state->get_V_dot_down();
-    return Az;
+    return fgGetDouble("/accelerations/ned/north-accel-fps_sec", 0.0);
 }
 
 float get_anzg   ( void )
 {
-    float anzg = current_aircraft.fdm_state->get_N_Z_cg();
-    return anzg;
+    return fgGetDouble("/accelerations/n-z-cg-fps_sec", 0.0);
 }
 
 #ifdef ENABLE_SP_FDM
-int get_iaux1 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(1);
-}
-
-int get_iaux2 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(2);
-}
-
-int get_iaux3 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(3);
-}
-
-int get_iaux4 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(4);
-}
-
-int get_iaux5 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(5);
-}
-
-int get_iaux6 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(6);
-}
-
-int get_iaux7 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(7);
-}
-
-int get_iaux8 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(8);
-}
-
-int get_iaux9 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(9);
-}
-
-int get_iaux10 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(10);
-}
-
-int get_iaux11 (void)
-{
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_iaux(11);
-}
-
-int get_iaux12 (void)
-{
-     FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-     return fdm->get_iaux(12);
-}
-
 float get_aux1 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_daux(1);
+    return fgGetDouble("/fdm-ada/ship-lat", 0.0);
 }
 
 float get_aux2 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_daux(2);
+    return fgGetDouble("/fdm-ada/ship-lon", 0.0);
 }
 
 float get_aux3 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_daux(3);
+    return fgGetDouble("/fdm-ada/ship-alt", 0.0);
 }
 
 float get_aux4 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_daux(4);
+    return fgGetDouble("/fdm-ada/skijump-dist", 0.0);
 }
 
 float get_aux5 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_daux(5);
+    return fgGetDouble("/fdm-ada/aux5", 0.0);
 }
 
 float get_aux6 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_daux(6);
+    return fgGetDouble("/fdm-ada/aux6", 0.0);
 }
 
 float get_aux7 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_daux(7);
+    return fgGetDouble("/fdm-ada/aux7", 0.0);
 }
 
 float get_aux8 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_daux(8);
-}
+    return fgGetDouble("/fdm-ada/aux8", 0.0);}
 
 float get_aux9 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(1);
-}
+    return fgGetDouble("/fdm-ada/aux9", 0.0);}
 
 float get_aux10 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(2);
+    return fgGetDouble("/fdm-ada/aux10", 0.0);
 }
 
 float get_aux11 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(3);
+    return fgGetDouble("/fdm-ada/aux11", 0.0);
 }
 
 float get_aux12 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(4);
+    return fgGetDouble("/fdm-ada/aux12", 0.0);
 }
 
 float get_aux13 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(5);
+    return fgGetDouble("/fdm-ada/aux13", 0.0);
 }
 
 float get_aux14 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(6);
+    return fgGetDouble("/fdm-ada/aux14", 0.0);
 }
 
 float get_aux15 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(7);
+    return fgGetDouble("/fdm-ada/aux15", 0.0);
 }
 
 float get_aux16 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(8);
+    return fgGetDouble("/fdm-ada/aux16", 0.0);
 }
 
 float get_aux17 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(9);
+    return fgGetDouble("/fdm-ada/aux17", 0.0);
 }
 
 float get_aux18 (void)
 {
-    FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
-    return fdm->get_faux(10);
+    return fgGetDouble("/fdm-ada/aux18", 0.0);
 }
 #endif
 
 
-bool fgCockpitInit( fgAIRCRAFT *cur_aircraft )
+bool fgCockpitInit()
 {
     SG_LOG( SG_COCKPIT, SG_INFO, "Initializing cockpit subsystem" );
 
@@ -529,7 +375,7 @@ bool fgCockpitInit( fgAIRCRAFT *cur_aircraft )
     // HI_Head is now a null pointer so we can generate a new list from the
     // current aircraft.
 
-    fgHUDInit( cur_aircraft );
+    fgHUDInit();
 
     return true;
 }