#endif
#include <GL/glut.h>
-#include <simgear/xgl/xgl.h>
+// #include <simgear/xgl/xgl.h>
#include <stdlib.h>
#include <stdio.h>
#include <simgear/constants.h>
#include <simgear/debug/logstream.hxx>
-#include <simgear/math/fg_random.h>
#include <simgear/math/polar3d.hxx>
#include <Aircraft/aircraft.hxx>
#include <Include/general.hxx>
-#include <Main/options.hxx>
-#include <Main/views.hxx>
+#include <FDM/ADA.hxx>
+#include <Main/globals.hxx>
+#include <Main/fg_props.hxx>
#include <Scenery/scenery.hxx>
#include <Time/fg_timer.hxx>
-#include <Time/fg_time.hxx>
#include <GUI/gui.h>
#include "cockpit.hxx"
get_formated_gmt_time( void )
{
static char buf[32];
- FGTime *t = FGTime::cur_time_params;
- const struct tm *p = t->getGmt();
+ const struct tm *p = globals->get_time_params()->getGmt();
sprintf( buf, "%d/%d/%4d %d:%02d:%02d",
p->tm_mon+1, p->tm_mday, 1900 + p->tm_year,
p->tm_hour, p->tm_min, p->tm_sec);
{
// Make an explicit function call.
float speed = current_aircraft.fdm_state->get_V_calibrated_kts()
- * current_options.get_speed_up();
+ * fgGetInt("/sim/speed-up"); // FIXME: inefficient
return( speed );
}
// f->get_Latitude() * RAD_TO_ARCSEC);
float altitude;
- if ( current_options.get_units() == fgOPTIONS::FG_UNITS_FEET ) {
+ if ( fgGetString("/sim/startup/units") == "feet" ) {
altitude = current_aircraft.fdm_state->get_Altitude();
} else {
altitude = (current_aircraft.fdm_state->get_Altitude() * FEET_TO_METER);
{
float agl;
- if ( current_options.get_units() == fgOPTIONS::FG_UNITS_FEET ) {
+ if ( fgGetString("/sim/startup/units") == "feet" ) {
agl = (current_aircraft.fdm_state->get_Altitude()
- scenery.cur_elev * METER_TO_FEET);
} else {
float get_fov( void )
{
- float fov = current_options.get_fov();
+ float fov = globals->get_current_view()->get_fov();
return (fov);
}
float get_vfc_ratio( void )
{
- float vfc = current_view.get_vfc_ratio();
- return (vfc);
+ // float vfc = current_view.get_vfc_ratio();
+ // return (vfc);
+ return 0.0;
}
float get_vfc_tris_drawn ( void )
{
- float rendered = current_view.get_tris_rendered();
- return (rendered);
+ // float rendered = current_view.get_tris_rendered();
+ // return (rendered);
+ return 0.0;
}
float get_vfc_tris_culled ( void )
{
- float culled = current_view.get_tris_culled();
- return (culled);
+ // float culled = current_view.get_tris_culled();
+ // return (culled);
+ return 0.0;
}
float get_climb_rate( void )
{
float climb_rate;
- if ( current_options.get_units() == fgOPTIONS::FG_UNITS_FEET ) {
+ if ( fgGetString("/sim/startup/units") == "feet" ) {
climb_rate = current_aircraft.fdm_state->get_Climb_Rate() * 60.0;
} else {
climb_rate = current_aircraft.fdm_state->get_Climb_Rate() * FEET_TO_METER * 60.0;
float get_view_direction( void )
{
- double view;
-
- view = FG_2PI - current_view.get_view_offset();
- view = ( current_aircraft.fdm_state->get_Psi() + view) * RAD_TO_DEG;
+ double view_off = FG_2PI - globals->get_current_view()->get_view_offset();
+ double view = ( current_aircraft.fdm_state->get_Psi() + view_off)
+ * RAD_TO_DEG;
if(view > 360.)
view -= 360.;
else if(view<0.)
view += 360.;
- float fview = view;
- return( fview );
+ return view;
}
+// $$$ begin - added, VS Renganathan 13 Oct 2K
+// #ifdef FIGHTER_HUD
+float get_Vx ( void )
+{
+ // CLO - 5 Jan 2000 - something needs to get addressed here
+ // float Vxx = current_aircraft.fdm_state->get_V_north_rel_ground();
+ float Vxx = 0;
+ return (Vxx);
+}
+
+float get_Vy ( void )
+{
+ // CLO - 5 Jan 2000 - something needs to get addressed here
+ // float Vyy = current_aircraft.fdm_state->get_V_east_rel_ground();
+ float Vyy = 0;
+ return (Vyy);
+}
+
+float get_Vz ( void )
+{
+ // CLO - 5 Jan 2000 - something needs to get addressed here
+ // float Vzz = current_aircraft.fdm_state->get_V_down_rel_ground();
+ float Vzz = 0;
+ 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);
+}
+
+float get_anzg ( void )
+{
+ float anzg = current_aircraft.fdm_state->get_N_Z_cg();
+ return (anzg);
+}
+
+int get_iaux1 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux1();
+}
+
+int get_iaux2 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux2();
+}
+
+int get_iaux3 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux3();
+}
+
+int get_iaux4 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux4();
+}
+
+int get_iaux5 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux5();
+}
+
+int get_iaux6 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux6();
+}
+
+int get_iaux7 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux7();
+}
+
+int get_iaux8 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux8();
+}
+
+int get_iaux9 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux9();
+}
+
+int get_iaux10 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux10();
+}
+
+int get_iaux11 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux11();
+}
+
+int get_iaux12 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_iaux12();
+}
+
+float get_aux1 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux1();
+}
+
+float get_aux2 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux2();
+}
+
+float get_aux3 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux3();
+}
+
+float get_aux4 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux4();
+}
+
+float get_aux5 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux5();
+}
+
+float get_aux6 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux6();
+}
+
+float get_aux7 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux7();
+}
+
+float get_aux8 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux8();
+}
+
+float get_aux9 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux9();
+}
+
+float get_aux10 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux10();
+}
+
+float get_aux11 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux11();
+}
+
+float get_aux12 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux12();
+}
+
+float get_aux13 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux13();
+}
+
+float get_aux14 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux14();
+}
+
+float get_aux15 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux15();
+}
+
+float get_aux16 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux16();
+}
+
+float get_aux17 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux17();
+}
+
+float get_aux18 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_aux18();
+}
+// #endif
+// $$$ end - added, VS Renganathan 13 Oct 2K
+
+
#ifdef NOT_USED
/****************************************************************************/
/* Convert degrees to dd mm'ss.s" (DMS-Format) */
}
#endif // 0
-/****************************************************************************/
-/* Convert degrees to dd mm'ss.s'' (DMS-Format) */
-/****************************************************************************/
-static char *toDMS(float a)
-{
- int neg = 0;
- float d, m, s;
- static char dms[16];
-
- if (a < 0.0f) {
- a = -a;
- neg = 1;
- }
- d = (float) ((int) a);
- a = (a - d) * 60.0f;
- m = (float) ((int) a);
- s = (a - m) * 60.0f;
-
- if (s > 59.5f) {
- s = 0.0f;
- m += 1.0f;
- }
- if (m > 59.5f) {
- m = 0.0f;
- d += 1.0f;
- }
- if (neg)
- d = -d;
-
- sprintf(dms, "%.0f*%02.0f %04.1f", d, m, s);
- return dms;
+
+/************************************************************************
+ 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.mmm' (DMM-Format) */
-/****************************************************************************/
-static char *toDM(float a)
-{
- int neg = 0;
- float d, m;
- static char dm[16];
-
- if (a < 0.0f) {
- a = -a;
- neg = 1;
- }
-
- d = (float) ( (int) a);
- m = (a - d) * 60.0f;
-
- if (m > 59.5f) {
- m = 0.0f;
- d += 1.0f;
- }
- if (neg) d = -d;
-
- sprintf(dm, "%.0f*%06.3f", d, m);
- 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);
"Cockpit: code " << ac_cockpit->code() << " status "
<< ac_cockpit->status() );
- int iwidth = current_view.get_winWidth();
- int iheight = current_view.get_winHeight();
+ // FIXME: inefficient
+ int iwidth = fgGetInt("/sim/startup/xsize");
+ // FIXME: inefficient
+ int iheight = fgGetInt("/sim/startup/ysize");
float width = iwidth;
float height = iheight;
- if ( current_options.get_hud_status() ) {
+ // FIXME: inefficient
+ if ( fgGetBool("/sim/hud/visibility") ) {
// This will check the global hud linked list pointer.
// If these is anything to draw it will.
fgUpdateHUD();
// sprintf(buf,"%-4.1f %7.0f %7.0f", fps, tris, culled);
sprintf(buf,"%-5.1f", fps);
- glMatrixMode(GL_PROJECTION);
+ glMatrixMode( GL_PROJECTION );
glPushMatrix();
glLoadIdentity();
- gluOrtho2D(0, width, 0, height);
- glMatrixMode(GL_MODELVIEW);
+ gluOrtho2D( 0, fgGetInt("/sim/startup/xsize"),
+ 0, fgGetInt("/sim/startup/ysize") );
+ glMatrixMode( GL_MODELVIEW );
glPushMatrix();
glLoadIdentity();
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_LIGHTING);
+ glDisable( GL_DEPTH_TEST );
+ glDisable( GL_LIGHTING );
- glColor3f (0.9, 0.4, 0.2);
+ glColor3f( 0.9, 0.4, 0.2 );
guiFnt.drawString( buf,
- width/2 - guiFnt.getStringWidth(buf)/2,
+ int(width - guiFnt.getStringWidth(buf) - 10),
10 );
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHTING);
- glMatrixMode(GL_PROJECTION);
+ glEnable( GL_DEPTH_TEST );
+ glEnable( GL_LIGHTING );
+ glMatrixMode( GL_PROJECTION );
glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
+ glMatrixMode( GL_MODELVIEW );
glPopMatrix();
}
#endif // #ifdef DISPLAY_COUNTER
- xglViewport( 0, 0, iwidth, iheight );
+ glViewport( 0, 0,
+ fgGetInt("/sim/startup/xsize"),
+ fgGetInt("/sim/startup/ysize") );
- current_panel->update();
}