From e27a88756c7953660b86a57d786f575c5b499d4d Mon Sep 17 00:00:00 2001 From: curt Date: Fri, 7 Dec 2001 22:38:19 +0000 Subject: [PATCH] Changes from Norman Vine that 'almost' get 'reset' and 'goto apt' working. Note there is still a problem when doing a 'reset' after doing a 'goto'. Curt says: I also see that doing two subsequent reset's on a JSBSim model results in a segfault in a deconstructor deep inside JSBSim. --- aclocal.m4 | 2 +- src/FDM/LaRCsim.cxx | 71 ++++++++-------- src/FDM/YASim/YASim.cxx | 2 +- src/FDM/flight.cxx | 175 ++++++++++++++++++++++------------------ src/FDM/flight.hxx | 7 +- src/GUI/apt_dlg.cxx | 60 +++++++------- src/GUI/gui_local.cxx | 78 ++++++++++++------ 7 files changed, 224 insertions(+), 171 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 7d5836b91..78a4037e5 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p4 +dnl aclocal.m4 generated automatically by aclocal 1.4 dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation diff --git a/src/FDM/LaRCsim.cxx b/src/FDM/LaRCsim.cxx index 32e93444c..cf3682814 100644 --- a/src/FDM/LaRCsim.cxx +++ b/src/FDM/LaRCsim.cxx @@ -44,24 +44,24 @@ FGLaRCsim::FGLaRCsim( double dt ) { speed_up = fgGetNode("/sim/speed-up", true); aero = fgGetNode("/sim/aero", true); - + ls_toplevel_init( 0.0, (char *)(aero->getStringValue().c_str()) ); lsic=new LaRCsimIC; //this needs to be brought up after LaRCsim is if ( aero->getStringValue() == "c172" ) { - copy_to_LaRCsim(); // initialize all of LaRCsim's vars - - //this should go away someday -- formerly done in fg_init.cxx - Mass = 8.547270E+01; - I_xx = 1.048000E+03; - I_yy = 3.000000E+03; - I_zz = 3.530000E+03; - I_xz = 0.000000E+00; + copy_to_LaRCsim(); // initialize all of LaRCsim's vars + + //this should go away someday -- formerly done in fg_init.cxx + Mass = 8.547270E+01; + I_xx = 1.048000E+03; + I_yy = 3.000000E+03; + I_zz = 3.530000E+03; + I_xz = 0.000000E+00; } - + ls_set_model_dt( get_delta_t() ); - - // Initialize our little engine that hopefully might + + // Initialize our little engine that hopefully might eng.init( get_delta_t() ); // dcl - in passing dt to init rather than update I am assuming // that the LaRCsim dt is fixed at one value (yes it is 120hz CLO) @@ -75,15 +75,16 @@ FGLaRCsim::FGLaRCsim( double dt ) { // Also note that this is the max quantity - the usable quantity // is slightly less set_Tank1Fuel(28.0); - set_Tank2Fuel(28.0); + set_Tank2Fuel(28.0); } FGLaRCsim::~FGLaRCsim(void) { if ( lsic != NULL ) { - delete lsic; - lsic = NULL; + free_engines(); + delete lsic; + lsic = NULL; } -} +} // Initialize the LaRCsim flight model, dt is the time increment for // each subsequent iteration through the EOM @@ -165,7 +166,7 @@ bool FGLaRCsim::update( int multiloop ) { // copy control positions into the LaRCsim structure Lat_control = globals->get_controls()->get_aileron() / - speed_up->getIntValue(); + speed_up->getIntValue(); Long_control = globals->get_controls()->get_elevator(); Long_trim = globals->get_controls()->get_elevator_trim(); Rudder_pedal = globals->get_controls()->get_rudder() / @@ -173,7 +174,7 @@ bool FGLaRCsim::update( int multiloop ) { Flap_handle = 30.0 * globals->get_controls()->get_flaps(); if ( aero->getStringValue() == "c172" ) { - Use_External_Engine = 1; + Use_External_Engine = 1; } else { Use_External_Engine = 0; } @@ -599,7 +600,7 @@ void FGLaRCsim::set_ls(void) { SG_LOG( SG_FLIGHT, SG_INFO, " V_north_airmass: " << V_north_airmass ); SG_LOG( SG_FLIGHT, SG_INFO, " V_east_airmass: " << V_east_airmass ); SG_LOG( SG_FLIGHT, SG_INFO, " V_down_airmass: " << V_down_airmass ); -} +} void FGLaRCsim::snap_shot(void) { lsic->SetLatitudeGDRadIC( get_Latitude() ); @@ -623,7 +624,7 @@ void FGLaRCsim::set_Latitude(double lat) { lsic->SetLatitudeGDRadIC(lat); set_ls(); copy_from_LaRCsim(); //update the bus -} +} void FGLaRCsim::set_Longitude(double lon) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Longitude: " << lon ); @@ -631,7 +632,7 @@ void FGLaRCsim::set_Longitude(double lon) { lsic->SetLongitudeRadIC(lon); set_ls(); copy_from_LaRCsim(); //update the bus -} +} void FGLaRCsim::set_Altitude(double alt) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Altitude: " << alt ); @@ -648,7 +649,7 @@ void FGLaRCsim::set_V_calibrated_kts(double vc) { lsic->SetVcalibratedKtsIC(vc); set_ls(); copy_from_LaRCsim(); //update the bus -} +} void FGLaRCsim::set_Mach_number(double mach) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Mach_number: " << mach ); @@ -656,7 +657,7 @@ void FGLaRCsim::set_Mach_number(double mach) { lsic->SetMachIC(mach); set_ls(); copy_from_LaRCsim(); //update the bus -} +} void FGLaRCsim::set_Velocities_Local( double north, double east, double down ){ SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Velocities_local: " @@ -665,7 +666,7 @@ void FGLaRCsim::set_Velocities_Local( double north, double east, double down ){ lsic->SetVNEDFpsIC(north, east, down); set_ls(); copy_from_LaRCsim(); //update the bus -} +} void FGLaRCsim::set_Velocities_Wind_Body( double u, double v, double w){ SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Velocities_Wind_Body: " @@ -674,7 +675,7 @@ void FGLaRCsim::set_Velocities_Wind_Body( double u, double v, double w){ lsic->SetUVWFpsIC(u,v,w); set_ls(); copy_from_LaRCsim(); //update the bus -} +} //Euler angles void FGLaRCsim::set_Euler_Angles( double phi, double theta, double psi ) { @@ -686,8 +687,8 @@ void FGLaRCsim::set_Euler_Angles( double phi, double theta, double psi ) { lsic->SetRollAngleRadIC(phi); lsic->SetHeadingRadIC(psi); set_ls(); - copy_from_LaRCsim(); //update the bus -} + copy_from_LaRCsim(); //update the bus +} //Flight Path void FGLaRCsim::set_Climb_Rate( double roc) { @@ -695,24 +696,24 @@ void FGLaRCsim::set_Climb_Rate( double roc) { snap_shot(); lsic->SetClimbRateFpsIC(roc); set_ls(); - copy_from_LaRCsim(); //update the bus -} + copy_from_LaRCsim(); //update the bus +} void FGLaRCsim::set_Gamma_vert_rad( double gamma) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Gamma_vert_rad: " << gamma ); snap_shot(); lsic->SetFlightPathAngleRadIC(gamma); set_ls(); - copy_from_LaRCsim(); //update the bus -} + copy_from_LaRCsim(); //update the bus +} void FGLaRCsim::set_Runway_altitude(double ralt) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Runway_altitude: " << ralt ); snap_shot(); lsic->SetRunwayAltitudeFtIC(ralt); set_ls(); - copy_from_LaRCsim(); //update the bus -} + copy_from_LaRCsim(); //update the bus +} void FGLaRCsim::set_AltitudeAGL(double altagl) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_AltitudeAGL: " << altagl ); @@ -731,7 +732,7 @@ void FGLaRCsim::set_Velocities_Local_Airmass (double wnorth, lsic->SetVNEDAirmassFpsIC( wnorth, weast, wdown ); set_ls(); copy_from_LaRCsim(); -} +} void FGLaRCsim::set_Static_pressure(double p) { SG_LOG( SG_FLIGHT, SG_INFO, @@ -748,7 +749,7 @@ void FGLaRCsim::set_Static_temperature(double T) { } -void FGLaRCsim::set_Density(double rho) { +void FGLaRCsim::set_Density(double rho) { SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Density: " << rho ); SG_LOG( SG_FLIGHT, SG_INFO, "LaRCsim does not support externally supplied atmospheric data" ); diff --git a/src/FDM/YASim/YASim.cxx b/src/FDM/YASim/YASim.cxx index 2f4c9a111..da2a2d0bd 100644 --- a/src/FDM/YASim/YASim.cxx +++ b/src/FDM/YASim/YASim.cxx @@ -108,7 +108,7 @@ void YASim::init() // Build a filename and parse it SGPath f(globals->get_fg_root()); f.append("Aircraft-yasim"); - f.append(fgGetString("/sim/aircraft")); + f.append(fgGetString("/sim/aero")); f.concat(".xml"); readXML(f.str(), *_fdm); diff --git a/src/FDM/flight.cxx b/src/FDM/flight.cxx index fc9d0cab4..348fe3aa3 100644 --- a/src/FDM/flight.cxx +++ b/src/FDM/flight.cxx @@ -52,10 +52,10 @@ FGInterface base_fdm_state; inline void init_vec(FG_VECTOR_3 vec) { vec[0] = 0.0; vec[1] = 0.0; vec[2] = 0.0; -} +} FGEngInterface::FGEngInterface() { - + // inputs Throttle=0; Mixture=0; @@ -77,7 +77,7 @@ FGGearInterface::FGGearInterface(void) { x=y=z=0.0; brake=rolls=WoW=false; position=1.0; -} +} FGGearInterface::~FGGearInterface() { } @@ -85,7 +85,7 @@ FGGearInterface::~FGGearInterface() { // Constructor FGInterface::FGInterface() { _setup(); -} +} FGInterface::FGInterface( double dt ) { _setup(); @@ -95,7 +95,7 @@ FGInterface::FGInterface( double dt ) { // Destructor FGInterface::~FGInterface() { -// unbind(); // FIXME: should be called explicitly + // unbind(); // FIXME: should be called explicitly } @@ -130,38 +130,38 @@ FGInterface::_setup () init_vec( n_pilot_body_v ); init_vec( omega_dot_body_v ); init_vec( v_local_v ); - init_vec( v_local_rel_ground_v ); - init_vec( v_local_airmass_v ); - init_vec( v_local_rel_airmass_v ); - init_vec( v_local_gust_v ); - init_vec( v_wind_body_v ); - init_vec( omega_body_v ); - init_vec( omega_local_v ); - init_vec( omega_total_v ); + init_vec( v_local_rel_ground_v ); + init_vec( v_local_airmass_v ); + init_vec( v_local_rel_airmass_v ); + init_vec( v_local_gust_v ); + init_vec( v_wind_body_v ); + init_vec( omega_body_v ); + init_vec( omega_local_v ); + init_vec( omega_total_v ); init_vec( euler_rates_v ); - init_vec( geocentric_rates_v ); + init_vec( geocentric_rates_v ); init_vec( geocentric_position_v ); init_vec( geodetic_position_v ); init_vec( euler_angles_v ); - init_vec( d_cg_rwy_local_v ); - init_vec( d_cg_rwy_rwy_v ); - init_vec( d_pilot_rwy_local_v ); - init_vec( d_pilot_rwy_rwy_v ); + init_vec( d_cg_rwy_local_v ); + init_vec( d_cg_rwy_rwy_v ); + init_vec( d_pilot_rwy_local_v ); + init_vec( d_pilot_rwy_rwy_v ); init_vec( t_local_to_body_m[0] ); init_vec( t_local_to_body_m[1] ); init_vec( t_local_to_body_m[2] ); - + mass=i_xx=i_yy=i_zz=i_xz=0; - nlf=0; + nlf=0; v_rel_wind=v_true_kts=v_rel_ground=v_inertial=0; v_ground_speed=v_equiv=v_equiv_kts=0; v_calibrated=v_calibrated_kts=0; - gravity=0; - centrifugal_relief=0; - alpha=beta=alpha_dot=beta_dot=0; + gravity=0; + centrifugal_relief=0; + alpha=beta=alpha_dot=beta_dot=0; cos_alpha=sin_alpha=cos_beta=sin_beta=0; cos_phi=sin_phi=cos_theta=sin_theta=cos_psi=sin_psi=0; - gamma_vert_rad=gamma_horiz_rad=0; + gamma_vert_rad=gamma_horiz_rad=0; sigma=density=v_sound=mach_number=0; static_pressure=total_pressure=impact_pressure=0; dynamic_pressure=0; @@ -170,7 +170,7 @@ FGInterface::_setup () runway_altitude=runway_latitude=runway_longitude=0; runway_heading=0; radius_to_rwy=0; - climb_rate=0; + climb_rate=0; sin_lat_geocentric=cos_lat_geocentric=0; sin_latitude=cos_latitude=0; sin_longitude=cos_longitude=0; @@ -185,7 +185,7 @@ FGInterface::init () {} * * Subclasses of FGInterface may do their own, additional initialization, * but there is some that is common to all. Normally, they should call - * this before they begin their own init to make sure the basic structures + * this before they begin their own init to make sure the basic structures * are set up properly. */ void @@ -217,7 +217,7 @@ FGInterface::common_init () "...initializing ground elevation to " << ground_elev_ft << "ft..." ); SG_LOG( SG_FLIGHT, SG_INFO, "common_init(): set ground elevation " - << ground_elev_ft ); + << ground_elev_ft ); base_fdm_state.set_Runway_altitude( ground_elev_ft ); set_Runway_altitude( ground_elev_ft ); @@ -290,33 +290,33 @@ FGInterface::bind () bound = true; // Time management (read-only) - fgTie("/fdm/time/delta_t", this, - &FGInterface::get_delta_t); // read-only - fgTie("/fdm/time/elapsed", this, - &FGInterface::get_elapsed); // read-only - fgTie("/fdm/time/remainder", this, - &FGInterface::get_remainder); // read-only - fgTie("/fdm/time/multi_loop", this, - &FGInterface::get_multi_loop); // read-only + fgTie("/fdm/time/delta_t", this, + &FGInterface::get_delta_t); // read-only + fgTie("/fdm/time/elapsed", this, + &FGInterface::get_elapsed); // read-only + fgTie("/fdm/time/remainder", this, + &FGInterface::get_remainder); // read-only + fgTie("/fdm/time/multi_loop", this, + &FGInterface::get_multi_loop); // read-only // Aircraft position fgTie("/position/latitude-deg", this, - &FGInterface::get_Latitude_deg, - &FGInterface::set_Latitude_deg, - false); + &FGInterface::get_Latitude_deg, + &FGInterface::set_Latitude_deg, + false); fgSetArchivable("/position/latitude-deg"); fgTie("/position/longitude-deg", this, - &FGInterface::get_Longitude_deg, - &FGInterface::set_Longitude_deg, - false); + &FGInterface::get_Longitude_deg, + &FGInterface::set_Longitude_deg, + false); fgSetArchivable("/position/longitude-deg"); fgTie("/position/altitude-ft", this, - &FGInterface::get_Altitude, - &FGInterface::set_Altitude, - false); + &FGInterface::get_Altitude, + &FGInterface::set_Altitude, + false); fgSetArchivable("/position/altitude-ft"); fgTie("/position/altitude-agl-ft", this, - &FGInterface::get_Altitude_AGL); // read-only + &FGInterface::get_Altitude_AGL); // read-only // Orientation fgTie("/orientation/roll-deg", this, @@ -471,6 +471,25 @@ FGInterface::unbind () } } +void +FGInterface::free_engines () +{ + int i; + for ( i = 0; i < get_num_engines(); ++i ) { + delete get_engine(i); + } + engines.clear(); +} + +void +FGInterface::free_gear_units () +{ + int i; + for ( i = 0; i < get_num_gear(); ++i ) { + delete [] get_gear_unit(i); + } + gear.clear(); +} /** * Update the state of the FDM (i.e. run the equations of motion). @@ -487,10 +506,10 @@ bool FGInterface::update( int multi_loop ) { return false; } - + void FGInterface::_updatePosition( double lat_geoc, double lon, double alt ) { double lat_geod, tmp_alt, sl_radius1, sl_radius2, tmp_lat_geoc; - + // cout << "starting sea level rad = " << get_Sea_level_radius() << endl; sgGeocToGeod( lat_geoc, ( get_Sea_level_radius() + alt ) * SG_FEET_TO_METER, @@ -510,31 +529,31 @@ void FGInterface::_updatePosition( double lat_geoc, double lon, double alt ) { sl_radius2 * SG_METER_TO_FEET + alt ); _set_Geodetic_Position( lat_geod, lon, alt ); - + _set_Sea_level_radius( sl_radius2 * SG_METER_TO_FEET ); - _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET ); - + _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET ); + _set_sin_lat_geocentric( lat_geoc ); _set_cos_lat_geocentric( lat_geoc ); - + _set_sin_cos_longitude( lon ); - + _set_sin_cos_latitude( lat_geod ); - + /* Norman's code for slope of the terrain */ /* needs to be tested -- get it on the HUD and taxi around */ /* double *tnorm = scenery.cur_normal; - + double sy = sin ( -get_Psi() ) ; double cy = cos ( -get_Psi() ) ; double phitb, thetatb, psitb; - if(tnorm[1] != 0.0) { - psitb = -atan2 ( tnorm[0], tnorm[1] ); + if ( tnorm[1] != 0.0 ) { + psitb = -atan2 ( tnorm[0], tnorm[1] ); } - if(tnorm[2] != 0.0) { - thetatb = atan2 ( tnorm[0] * cy - tnorm[1] * sy, tnorm[2] ); - phitb = -atan2 ( tnorm[1] * cy + tnorm[0] * sy, tnorm[2] ); + if ( tnorm[2] != 0.0 ) { + thetatb = atan2 ( tnorm[0] * cy - tnorm[1] * sy, tnorm[2] ); + phitb = -atan2 ( tnorm[1] * cy + tnorm[0] * sy, tnorm[2] ); } _set_terrain_slope(phitb, thetatb, psitb) @@ -575,7 +594,7 @@ void FGInterface::extrapolate( int time_offset ) { // Set the altitude (force) void fgFDMForceAltitude(const string &model, double alt_meters) { SG_LOG(SG_FLIGHT,SG_INFO, "fgFDMForceAltitude: " << alt_meters ); - + double sea_level_radius_meters; double lat_geoc; @@ -589,7 +608,7 @@ void fgFDMForceAltitude(const string &model, double alt_meters) { cur_fdm_state->set_Altitude( alt_meters * SG_METER_TO_FEET ); cur_fdm_state->set_Sea_level_radius( sea_level_radius_meters * - SG_METER_TO_FEET ); + SG_METER_TO_FEET ); // additional work needed for some flight models if ( model == "larcsim" ) { @@ -599,38 +618,38 @@ void fgFDMForceAltitude(const string &model, double alt_meters) { // Positions -void FGInterface::set_Latitude(double lat) { +void FGInterface::set_Latitude(double lat) { geodetic_position_v[0] = lat; -} +} void FGInterface::set_Longitude(double lon) { geodetic_position_v[1] = lon; -} +} void FGInterface::set_Altitude(double alt) { geodetic_position_v[2] = alt; -} +} void FGInterface::set_AltitudeAGL(double altagl) { altitude_agl=altagl; -} +} // Velocities void FGInterface::set_V_calibrated_kts(double vc) { v_calibrated_kts = vc; -} +} void FGInterface::set_Mach_number(double mach) { mach_number = mach; -} +} void FGInterface::set_Velocities_Local( double north, double east, double down ){ v_local_v[0] = north; v_local_v[1] = east; - v_local_v[2] = down; -} + v_local_v[2] = down; +} void FGInterface::set_Velocities_Wind_Body( double u, double v, @@ -638,7 +657,7 @@ void FGInterface::set_Velocities_Wind_Body( double u, v_wind_body_v[0] = u; v_wind_body_v[1] = v; v_wind_body_v[2] = w; -} +} // Euler angles void FGInterface::set_Euler_Angles( double phi, @@ -652,20 +671,20 @@ void FGInterface::set_Euler_Angles( double phi, // Flight Path void FGInterface::set_Climb_Rate( double roc) { climb_rate = roc; -} +} void FGInterface::set_Gamma_vert_rad( double gamma) { gamma_vert_rad = gamma; -} +} // Earth void FGInterface::set_Sea_level_radius(double slr) { sea_level_radius = slr; -} +} void FGInterface::set_Runway_altitude(double ralt) { runway_altitude = ralt; -} +} void FGInterface::set_Static_pressure(double p) { static_pressure = p; } void FGInterface::set_Static_temperature(double T) { static_temperature = T; } @@ -677,7 +696,7 @@ void FGInterface::set_Velocities_Local_Airmass (double wnorth, v_local_airmass_v[0] = wnorth; v_local_airmass_v[1] = weast; v_local_airmass_v[2] = wdown; -} +} void FGInterface::_busdump(void) { @@ -719,7 +738,7 @@ void FGInterface::_busdump(void) { SG_LOG(SG_FLIGHT,SG_INFO,"d_cg_rwy_rwy_v[3]: " << d_cg_rwy_rwy_v[0] << ", " << d_cg_rwy_rwy_v[1] << ", " << d_cg_rwy_rwy_v[2]); SG_LOG(SG_FLIGHT,SG_INFO,"d_pilot_rwy_local_v[3]: " << d_pilot_rwy_local_v[0] << ", " << d_pilot_rwy_local_v[1] << ", " << d_pilot_rwy_local_v[2]); SG_LOG(SG_FLIGHT,SG_INFO,"d_pilot_rwy_rwy_v[3]: " << d_pilot_rwy_rwy_v[0] << ", " << d_pilot_rwy_rwy_v[1] << ", " << d_pilot_rwy_rwy_v[2]); - + SG_LOG(SG_FLIGHT,SG_INFO,"t_local_to_body_m[0][3]: " << t_local_to_body_m[0][0] << ", " << t_local_to_body_m[0][1] << ", " << t_local_to_body_m[0][2]); SG_LOG(SG_FLIGHT,SG_INFO,"t_local_to_body_m[1][3]: " << t_local_to_body_m[1][0] << ", " << t_local_to_body_m[1][1] << ", " << t_local_to_body_m[1][2]); SG_LOG(SG_FLIGHT,SG_INFO,"t_local_to_body_m[2][3]: " << t_local_to_body_m[2][0] << ", " << t_local_to_body_m[2][1] << ", " << t_local_to_body_m[2][2]); @@ -782,7 +801,7 @@ void FGInterface::_busdump(void) { SG_LOG(SG_FLIGHT,SG_INFO,"sin_latitude: " << sin_latitude ); SG_LOG(SG_FLIGHT,SG_INFO,"cos_latitude: " << cos_latitude ); SG_LOG(SG_FLIGHT,SG_INFO,"altitude_agl: " << altitude_agl ); -} +} void fgToggleFDMdataLogging(void) { diff --git a/src/FDM/flight.hxx b/src/FDM/flight.hxx index f37ada9ee..34f8c7a6a 100644 --- a/src/FDM/flight.hxx +++ b/src/FDM/flight.hxx @@ -1222,6 +1222,8 @@ public: inline void add_engine( FGEngInterface e ) { engines.push_back( e ); } + + void free_engines(); //gear inline int get_num_gear() const { @@ -1234,7 +1236,10 @@ public: inline void add_gear_unit( FGGearInterface fgi ) { gear.push_back( fgi ); - } + } + + void free_gear_units(); + }; diff --git a/src/GUI/apt_dlg.cxx b/src/GUI/apt_dlg.cxx index 23041f18a..6a5581dd8 100644 --- a/src/GUI/apt_dlg.cxx +++ b/src/GUI/apt_dlg.cxx @@ -82,35 +82,35 @@ void AptDialog_OK (puObject *) << AptId ); if ( airports.search( AptId, &a ) ) - { - // unbind the current fdm state so property changes - // don't get lost when we subsequently delete this fdm - // and create a new one. - cur_fdm_state->unbind(); - - AptId = a.id.c_str(); /// NHV fix wrong case crash - fgSetString("/sim/startup/airport-id", AptId.c_str() ); - // fgSetDouble("/position/altitude-ft", -9999.0 ); - // fgSetPosFromAirportID( AptId ); - fgSetPosFromAirportIDandHdg( AptId, - cur_fdm_state->get_Psi() * - SGD_RADIANS_TO_DEGREES); - BusyCursor(0); - fgReInitSubsystems(); - // if ( global_tile_mgr.init() ) { - // Load the local scenery data - global_tile_mgr.update( longitude->getDoubleValue(), - latitude->getDoubleValue() ); - // } else { - // SG_LOG( SG_GENERAL, SG_ALERT, - // "Error in Tile Manager initialization!" ); - // exit(-1); - // } - BusyCursor(1); - } else { - AptId += " not in database."; - mkDialog(AptId.c_str()); - } + { + // unbind the current fdm state so property changes + // don't get lost when we subsequently delete this fdm + // and create a new one. + cur_fdm_state->unbind(); + + AptId = a.id.c_str(); /// NHV fix wrong case crash + fgSetString("/sim/startup/airport-id", AptId.c_str() ); + // fgSetDouble("/position/altitude-ft", -9999.0 ); + // fgSetPosFromAirportID( AptId ); + fgSetPosFromAirportIDandHdg( AptId, + cur_fdm_state->get_Psi() * + SGD_RADIANS_TO_DEGREES); + BusyCursor(0); + fgReInitSubsystems(); + // if ( global_tile_mgr.init() ) { + // Load the local scenery data + global_tile_mgr.update( longitude->getDoubleValue(), + latitude->getDoubleValue() ); + // } else { + // SG_LOG( SG_GENERAL, SG_ALERT, + // "Error in Tile Manager initialization!" ); + // exit(-1); + // } + BusyCursor(1); + } else { + AptId += " not in database."; + mkDialog(AptId.c_str()); + } } if ( !freeze ) { globals->set_freeze( false ); @@ -130,7 +130,7 @@ void NewAirport(puObject *cb) { // strncpy( NewAirportId, fgGetString("/sim/startup/airport-id").c_str(), 16 ); sprintf( NewAirportId, "%s", fgGetString("/sim/startup/airport-id").c_str() ); - // cout << "NewAirport " << NewAirportId << endl; + // cout << "NewAirport " << NewAirportId << endl; AptDialogInput->setValue( NewAirportId ); FG_PUSH_PUI_DIALOG( AptDialog ); diff --git a/src/GUI/gui_local.cxx b/src/GUI/gui_local.cxx index 1eab13b41..1506577c5 100644 --- a/src/GUI/gui_local.cxx +++ b/src/GUI/gui_local.cxx @@ -6,12 +6,16 @@ # include #endif -#include // needed before pu.h -#include // plib include +#include // needed before pu.h +#include // plib include + +#include #include
#include
#include
+#include +#include