X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAircraft%2Faircraft.cxx;h=c3514e29afcc75d02f89075efce8e14a4b170c37;hb=3fbf3aa080159fb5dc41af7c4885b080013c8295;hp=ac0a8fb16bae3cf5aa285b6d16ac3309a32df8a8;hpb=2bf14d785fb568e2eee5ac29416ab325f0e57522;p=flightgear.git diff --git a/src/Aircraft/aircraft.cxx b/src/Aircraft/aircraft.cxx index ac0a8fb16..c3514e29a 100644 --- a/src/Aircraft/aircraft.cxx +++ b/src/Aircraft/aircraft.cxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started May 1997. // -// Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com +// Copyright (C) 1997 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -16,31 +16,37 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif -#include -#include // strdup +#include +#include // strdup #include -#include #include #include #include -#include -#include +#include +#include +#include #include
+#include
#include
-#include
+#include
+#include +#include +#include +#include #include "aircraft.hxx" -extern void fgInitFDM(void); -class FGFX; // This is a record containing all the info for the aircraft currently // being operated @@ -84,7 +90,7 @@ void fgAircraftOutputCurrent(fgAIRCRAFT *a) { // Show available aircraft types void fgReadAircraft(void) { - SGPropertyNode *aircraft_types = fgGetNode("/sim/aircraft-types", true); + // SGPropertyNode *aircraft_types = fgGetNode("/sim/aircraft-types", true); SGPath path( globals->get_fg_root() ); path.append("Aircraft"); @@ -121,10 +127,8 @@ void fgReadAircraft(void) { SGPropertyNode *desc = node->getNode("description"); if (desc) { -#endif - SGPropertyNode *aircraft = + SGPropertyNode *aircraft = aircraft_types->getChild(dire->d_name, 0, true); -#if 0 aircraft->setStringValue(strdup(desc->getStringValue())); } @@ -149,11 +153,19 @@ fgLoadAircraft (const SGPropertyNode * arg) fgSetBool("/sim/freeze/master", true); } + // TODO: + // remove electrical system cur_fdm_state->unbind(); + // Save the selected aircraft model since restoreInitialState + // will obverwrite it. + // string aircraft = fgGetString("/sim/aircraft", ""); globals->restoreInitialState(); + fgSetString("/sim/aircraft", aircraft.c_str()); + fgSetString("/sim/panel/path", "Aircraft/c172p/Panels/c172-vfr-panel.xml"); + if ( aircraft.size() > 0 ) { SGPath aircraft_path(globals->get_fg_root()); aircraft_path.append("Aircraft"); @@ -173,19 +185,43 @@ fgLoadAircraft (const SGPropertyNode * arg) SG_LOG(SG_INPUT, SG_ALERT, "No default aircraft specified"); } - // Update the FDM + // Initialize the (new) 2D panel. + // + string panel_path = fgGetString("/sim/panel/path", + "Aircraft/c172p/Panels/c172-vfr-panel.xml"); + + FGPanel *panel = fgReadPanel(panel_path); + if (panel == 0) { + SG_LOG( SG_INPUT, SG_ALERT, + "Error reading new panel from " << panel_path ); + } else { + SG_LOG( SG_INPUT, SG_INFO, "Loaded new panel from " << panel_path ); + globals->get_current_panel()->unbind(); + delete globals->get_current_panel(); + globals->set_current_panel( panel ); + globals->get_current_panel()->init(); + globals->get_current_panel()->bind(); + globals->get_current_panel()->update(0); + } + + globals->get_aircraft_model()->reinit(); + + // TODO: + // load new electrical system // - fgSetString("/sim/aircraft", aircraft.c_str()); - fgInitFDM(); // update our position based on current presets fgInitPosition(); + // Update the HUD + fgHUDInit(¤t_aircraft); + SGTime *t = globals->get_time_params(); delete t; t = fgInitTime(); globals->set_time_params( t ); + globals->get_subsystem("xml-autopilot")->reinit(); fgReInitSubsystems(); if ( !freeze ) {