# include <windows.h>
#endif
-#include <GL/glut.h>
-#include <simgear/xgl/xgl.h>
-
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <simgear/constants.h>
#include <simgear/debug/logstream.hxx>
-#include <simgear/math/fg_random.h>
#include <simgear/math/polar3d.hxx>
+#include <simgear/props/props.hxx>
+#include <simgear/timing/sg_time.hxx>
#include <Aircraft/aircraft.hxx>
#include <Include/general.hxx>
+#include <FDM/ADA.hxx>
#include <Main/globals.hxx>
-#include <Main/options.hxx>
-#include <Main/views.hxx>
+#include <Main/fg_props.hxx>
+#include <Main/viewmgr.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
float get_latitude( void )
{
- double lat;
-
- lat = current_aircraft.fdm_state->get_Latitude() * RAD_TO_DEG;
-
- float flat = lat;
- return(flat);
-
+ return current_aircraft.fdm_state->get_Latitude() * SGD_RADIANS_TO_DEGREES;
}
float get_lat_min( void )
{
- double a, d;
+ double a, d;
- a = current_aircraft.fdm_state->get_Latitude() * RAD_TO_DEG;
+ a = current_aircraft.fdm_state->get_Latitude() * SGD_RADIANS_TO_DEGREES;
if (a < 0.0) {
a = -a;
}
d = (double) ( (int) a);
float lat_min = (a - d) * 60.0;
- return(lat_min );
+
+ return lat_min;
}
float get_longitude( void )
{
- double lon;
-
- lon = current_aircraft.fdm_state->get_Longitude() * RAD_TO_DEG;
-
- float flon = lon;
- return(flon);
+ return current_aircraft.fdm_state->get_Longitude() * SGD_RADIANS_TO_DEGREES;
}
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);
+
return buf;
}
float get_long_min( void )
{
double a, d;
- a = current_aircraft.fdm_state->get_Longitude() * RAD_TO_DEG;
+ a = current_aircraft.fdm_state->get_Longitude() * SGD_RADIANS_TO_DEGREES;
if (a < 0.0) {
a = -a;
}
d = (double) ( (int) a);
float lon_min = (a - d) * 60.0;
- return(lon_min);
+
+ return lon_min;
}
float get_throttleval( void )
{
- float throttle = controls.get_throttle( 0 );
- return (throttle); // Hack limiting to one engine
+ // Hack limiting to one engine
+ return globals->get_controls()->get_throttle( 0 );
}
float get_aileronval( void )
{
- float aileronval = controls.get_aileron();
- return (aileronval);
+ return globals->get_controls()->get_aileron();
}
float get_elevatorval( void )
{
- float elevator_val = (float)controls.get_elevator();
- return elevator_val;
+ return globals->get_controls()->get_elevator();
}
float get_elev_trimval( void )
{
- float elevatorval = controls.get_elevator_trim();
- return (elevatorval);
+ return globals->get_controls()->get_elevator_trim();
}
float get_rudderval( void )
{
- float rudderval = controls.get_rudder();
- return (rudderval);
+ return globals->get_controls()->get_rudder();
}
float get_speed( void )
{
- // Make an explicit function call.
+ static const SGPropertyNode * speedup_node = fgGetNode("/sim/speed-up");
+
float speed = current_aircraft.fdm_state->get_V_calibrated_kts()
- * current_options.get_speed_up();
- return( speed );
+ * speedup_node->getIntValue();
+
+ return speed;
}
float get_mach(void)
{
- float mach=current_aircraft.fdm_state->get_Mach_number();
- return mach;
+ return current_aircraft.fdm_state->get_Mach_number();
}
float get_aoa( void )
{
- float aoa = current_aircraft.fdm_state->get_Alpha() * RAD_TO_DEG;
- return( aoa );
+ return current_aircraft.fdm_state->get_Alpha() * SGD_RADIANS_TO_DEGREES;
}
float get_roll( void )
{
- float roll = current_aircraft.fdm_state->get_Phi();
- return( roll );
+ return current_aircraft.fdm_state->get_Phi();
}
float get_pitch( void )
{
- float pitch = current_aircraft.fdm_state->get_Theta();
- return( pitch );
+ return current_aircraft.fdm_state->get_Theta();
}
float get_heading( void )
{
- float heading = (current_aircraft.fdm_state->get_Psi() * RAD_TO_DEG);
- return( heading );
+ return current_aircraft.fdm_state->get_Psi() * SGD_RADIANS_TO_DEGREES;
}
float get_altitude( void )
{
-// FGState *f;
- // double rough_elev;
+ static const SGPropertyNode *startup_units_node
+ = fgGetNode("/sim/startup/units");
-// current_aircraft.fdm_state
- // rough_elev = mesh_altitude(f->get_Longitude() * RAD_TO_ARCSEC,
- // f->get_Latitude() * RAD_TO_ARCSEC);
float altitude;
- if ( current_options.get_units() == fgOPTIONS::FG_UNITS_FEET ) {
+ if ( !strcmp(startup_units_node->getStringValue(), "feet") ) {
altitude = current_aircraft.fdm_state->get_Altitude();
} else {
- altitude = (current_aircraft.fdm_state->get_Altitude() * FEET_TO_METER);
+ altitude = (current_aircraft.fdm_state->get_Altitude()
+ * SG_FEET_TO_METER);
}
+
return altitude;
}
float get_agl( void )
{
+ static const SGPropertyNode *startup_units_node
+ = fgGetNode("/sim/startup/units");
+
float agl;
- if ( current_options.get_units() == fgOPTIONS::FG_UNITS_FEET ) {
+ if ( !strcmp(startup_units_node->getStringValue(), "feet") ) {
agl = (current_aircraft.fdm_state->get_Altitude()
- - scenery.cur_elev * METER_TO_FEET);
+ - globals->get_scenery()->get_cur_elev() * SG_METER_TO_FEET);
} else {
- agl = (current_aircraft.fdm_state->get_Altitude() * FEET_TO_METER
- - scenery.cur_elev);
+ agl = (current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
+ - globals->get_scenery()->get_cur_elev());
}
+
return agl;
}
float get_sideslip( void )
{
- float sideslip = current_aircraft.fdm_state->get_Beta();
- return( sideslip );
+ return current_aircraft.fdm_state->get_Beta();
}
float get_frame_rate( void )
{
- float frame_rate = general.get_frame_rate();
- return (frame_rate);
+ return general.get_frame_rate();
}
float get_fov( void )
{
- float fov = current_options.get_fov();
- return (fov);
+ return globals->get_current_view()->get_fov();
}
float get_vfc_ratio( void )
float get_climb_rate( void )
{
+ static const SGPropertyNode *startup_units_node
+ = fgGetNode("/sim/startup/units");
+
float climb_rate;
- if ( current_options.get_units() == fgOPTIONS::FG_UNITS_FEET ) {
+ if ( !strcmp(startup_units_node->getStringValue(), "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;
+ climb_rate = current_aircraft.fdm_state->get_Climb_Rate() * SG_FEET_TO_METER * 60.0;
}
- return (climb_rate);
+
+ return climb_rate;
}
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 = 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.;
- float fview = view;
- return( fview );
+ return view;
+}
+
+// $$$ 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;
+}
+
+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_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);
+}
+
+float get_aux2 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_daux(2);
+}
+
+float get_aux3 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_daux(3);
+}
+
+float get_aux4 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_daux(4);
+}
+
+float get_aux5 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_daux(5);
+}
+
+float get_aux6 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_daux(6);
+}
+
+float get_aux7 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_daux(7);
+}
+
+float get_aux8 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_daux(8);
+}
+
+float get_aux9 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(1);
+}
+
+float get_aux10 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(2);
+}
+
+float get_aux11 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(3);
+}
+
+float get_aux12 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(4);
+}
+
+float get_aux13 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(5);
+}
+
+float get_aux14 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(6);
+}
+
+float get_aux15 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(7);
+}
+
+float get_aux16 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(8);
+}
+
+float get_aux17 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ return fdm->get_faux(9);
+}
+
+float get_aux18 (void)
+{
+ FGADA *fdm = (FGADA *)current_aircraft.fdm_state;
+ 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) */
bool fgCockpitInit( fgAIRCRAFT *cur_aircraft )
{
- FG_LOG( FG_COCKPIT, FG_INFO, "Initializing cockpit subsystem" );
+ SG_LOG( SG_COCKPIT, SG_INFO, "Initializing cockpit subsystem" );
// cockpit->code = 1; /* It will be aircraft dependent */
// cockpit->status = 0;
// Have to set the LatLon display type
fgLatLonFormat = toDM;
- FG_LOG( FG_COCKPIT, FG_INFO,
+ SG_LOG( SG_COCKPIT, SG_INFO,
" Code " << ac_cockpit->code() << " Status "
<< ac_cockpit->status() );
void fgCockpitUpdate( void ) {
- FG_LOG( FG_COCKPIT, FG_DEBUG,
- "Cockpit: code " << ac_cockpit->code() << " status "
- << ac_cockpit->status() );
+ SG_LOG( SG_COCKPIT, SG_DEBUG,
+ "Cockpit: code " << ac_cockpit->code() << " status "
+ << ac_cockpit->status() );
- int iwidth = current_view.get_winWidth();
- int iheight = current_view.get_winHeight();
- float width = iwidth;
- float height = iheight;
+ static const SGPropertyNode * xsize_node = fgGetNode("/sim/startup/xsize");
+ static const SGPropertyNode * ysize_node = fgGetNode("/sim/startup/ysize");
+ static const SGPropertyNode * hud_visibility_node
+ = fgGetNode("/sim/hud/visibility");
- if ( current_options.get_hud_status() ) {
+ int iwidth = xsize_node->getIntValue();
+ int iheight = ysize_node->getIntValue();
+ float width = iwidth;
+ // float height = iheight;
+
+ // FIXME: inefficient
+ if ( hud_visibility_node->getBoolValue() ) {
// This will check the global hud linked list pointer.
// If these is anything to draw it will.
fgUpdateHUD();
}
+
#define DISPLAY_COUNTER
#ifdef DISPLAY_COUNTER
else
// 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, iwidth, 0, iheight );
+ 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 );
-
- current_panel->update();
+ glViewport( 0, 0, iwidth, iheight );
}
+