]> git.mxchange.org Git - flightgear.git/blobdiff - src/Cockpit/cockpit.cxx
Merge branch 'topic/atis' into merge/master-atis
[flightgear.git] / src / Cockpit / cockpit.cxx
index 2a1029284982ccc5541648cc166b4da2a48a0905..0414a0f6a0ae4fb0a15f3cde660c52bde07fbed4 100644 (file)
 #  include <config.h>
 #endif
 
-#ifdef HAVE_WINDOWS_H
-#  include <windows.h>
-#endif
-
 #include <simgear/compiler.h>
 
-#include SG_GLU_H
-
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 
 #include <simgear/constants.h>
 #include <simgear/debug/logstream.hxx>
-#include <simgear/math/polar3d.hxx>
 #include <simgear/props/props.hxx>
 #include <simgear/timing/sg_time.hxx>
 
 #include <Aircraft/aircraft.hxx>
 #include <Include/general.hxx>
-#ifdef ENABLE_SP_FMDS
+#ifdef ENABLE_SP_FDM
 #include <FDM/SP/ADA.hxx>
 #endif
 #include <Main/globals.hxx>
 #include <Main/fg_props.hxx>
 #include <Main/viewmgr.hxx>
+#include <Main/viewer.hxx>
 #include <Scenery/scenery.hxx>
-#include <Time/fg_timer.hxx>
 #include <GUI/gui.h>
 
 #include "cockpit.hxx"
 #include "hud.hxx"
 
 
-// This is a structure that contains all data related to
-// cockpit/panel/hud system
-
-static pCockpit ac_cockpit;
 // 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.
@@ -341,7 +330,7 @@ float get_anzg   ( void )
     return anzg;
 }
 
-#ifdef ENABLE_SP_FMDS
+#ifdef ENABLE_SP_FDM
 int get_iaux1 (void)
 {
     FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
@@ -522,158 +511,6 @@ float get_aux18 (void)
     return fdm->get_faux(10);
 }
 #endif
-// $$$ end - added, VS Renganathan 13 Oct 2K
-
-
-#ifdef NOT_USED
-/****************************************************************************/
-/* Convert degrees to dd mm'ss.s" (DMS-Format)                              */
-/****************************************************************************/
-char *dmshh_format(double degrees)
-{
-    static char buf[16];
-    int deg_part;
-    int min_part;
-    double sec_part;
-
-    if (degrees < 0)
-      degrees = -degrees;
-
-    deg_part = degrees;
-    min_part = 60.0 * (degrees - deg_part);
-    sec_part = 3600.0 * (degrees - deg_part - min_part / 60.0);
-
-    /* Round off hundredths */
-    if (sec_part + 0.005 >= 60.0)
-      sec_part -= 60.0, min_part += 1;
-    if (min_part >= 60)
-      min_part -= 60, deg_part += 1;
-
-    sprintf(buf,"%02d*%02d %05.2f",deg_part,min_part,sec_part);
-
-    return buf;
-}
-#endif // 0
-
-
-/************************************************************************
- Convert degrees to dd mm.mmm' (DMM-Format)
- Description: Converts using a round-off factor tailored to the required
- precision of the minutes field (three decimal places).  Round-off
- prevents function from returning a minutes value of 60.
-
- Input arguments: Coordinate value in decimal degrees
-
-************************************************************************/
-static char *toDM(float dd)
-{
-    static char  dm[16];
-    double tempdd;
-    double mn;
-    double sign = 1;
-    int deg;
-
-    if (dd < 0)
-        sign = -1;
-
-    /* round for minutes expressed to three decimal places */
-    tempdd = fabs(dd) + (5.0E-4 / 60.0);
-    deg = (int)tempdd;
-    mn = fabs( (tempdd - (double)(deg)) * 60.0 - 4.999E-4 );
-    deg *= (int)sign;
-    sprintf(dm, "%d*%06.3f", deg, mn);
-    return dm;
-}
-
-
-/************************************************************************
- Convert degrees to dd mm'ss.s'' (DMS-Format)
- Description: Converts using a round-off factor tailored to the required
- precision of the seconds field (one decimal place).  Round-off
- prevents function from returning a seconds value of 60.
-
- Input arguments: Coordinate value in decimal degrees
-
-************************************************************************/
-static char *toDMS(float dd)
-{
-    static char  dms[16];
-    double tempdd, tempmin;
-    int deg;
-    int mn;
-    double sec;
-    double sign = 1;
-
-    if (dd < 0)
-        sign = -1;
-
-    /* round up for seconds expressed to one decimal place */
-    tempdd = fabs(dd) + (0.05 / 3600.0);
-    deg = (int)tempdd;
-    tempmin =  (tempdd - (double)(deg)) * 60.0;
-    mn = (int)tempmin;
-    sec = fabs( (tempmin - (double)(mn)) * 60.0 - 0.049 );
-    deg *= (int)sign;
-    sprintf(dms, "%d*%02d %04.1f", deg, mn, sec);
-    return dms;
-}
-
-
-// Have to set the LatLon display type
-//static char *(*fgLatLonFormat)(float) = toDM;
-static char *(*fgLatLonFormat)(float);
-
-char *coord_format_lat(float latitude)
-{
-    static char buf[16];
-
-    sprintf(buf,"%s%c",
-//      dmshh_format(latitude),
-//      toDMS(latitude),
-//      toDM(latitude),
-        fgLatLonFormat(latitude),
-        latitude > 0 ? 'N' : 'S');
-    return buf;
-}
-
-char *coord_format_lon(float longitude)
-{
-    static char buf[80];
-
-    sprintf(buf,"%s%c",
-//      dmshh_format(longitude),
-//      toDMS(longitude),
-//      toDM(longitude),
-        fgLatLonFormat(longitude),
-        longitude > 0 ? 'E' : 'W');
-    return buf;
-}
-
-void fgLatLonFormatToggle( puObject *)
-{
-    static bool toggle = false;
-
-    if ( toggle )
-        fgLatLonFormat = toDM;
-    else
-        fgLatLonFormat = toDMS;
-
-    toggle = !toggle;
-}
-
-#ifdef NOT_USED
-char *coord_format_latlon(double latitude, double longitude)
-{
-    static char buf[1024];
-
-    sprintf(buf,"%s%c %s%c",
-        dmshh_format(latitude),
-        latitude > 0 ? 'N' : 'S',
-        dmshh_format(longitude),
-        longitude > 0 ? 'E' : 'W');
-    return buf;
-}
-#endif
 
 
 bool fgCockpitInit( fgAIRCRAFT *cur_aircraft )
@@ -693,23 +530,11 @@ bool fgCockpitInit( fgAIRCRAFT *cur_aircraft )
     // current aircraft.
 
     fgHUDInit( cur_aircraft );
-    ac_cockpit = new fg_Cockpit();
-
-    // Have to set the LatLon display type
-    fgLatLonFormat = toDM;
-
-    SG_LOG( SG_COCKPIT, SG_INFO,
-        "  Code " << ac_cockpit->code() << " Status "
-        << ac_cockpit->status() );
 
     return true;
 }
 
-void fgCockpitUpdate( void ) {
-
-    SG_LOG( SG_COCKPIT, SG_DEBUG,
-            "Cockpit: code " << ac_cockpit->code() << " status "
-            << ac_cockpit->status() );
+void fgCockpitUpdate( osg::State* state ) {
 
     static const SGPropertyNode * xsize_node = fgGetNode("/sim/startup/xsize");
     static const SGPropertyNode * ysize_node = fgGetNode("/sim/startup/ysize");
@@ -723,7 +548,7 @@ void fgCockpitUpdate( void ) {
     if ( hud_visibility_node->getBoolValue() ) {
         // This will check the global hud linked list pointer.
         // If there is anything to draw it will.
-        fgUpdateHUD();
+        fgUpdateHUD( state );
     }
 
     glViewport( 0, 0, iwidth, iheight );
@@ -734,7 +559,7 @@ void fgCockpitUpdate( void ) {
 
 
 struct FuncTable {
-    char *name;
+    const char *name;
     FLTFNPTR func;
 } fn_table[] = {
     { "agl", get_agl },
@@ -758,7 +583,7 @@ struct FuncTable {
     { "view_direction", get_view_direction },
     { "vfc_tris_culled", get_vfc_tris_culled },
     { "vfc_tris_drawn", get_vfc_tris_drawn },
-#ifdef ENABLE_SP_FMDS
+#ifdef ENABLE_SP_FDM
     { "aux1", get_aux1 },
     { "aux2", get_aux2 },
     { "aux3", get_aux3 },