]> git.mxchange.org Git - flightgear.git/blobdiff - src/Aircraft/aircraft.cxx
Make FGAircraftModel more subsystem-alike, move update to fgMainLoop.
[flightgear.git] / src / Aircraft / aircraft.cxx
index e88fb83e4f2d76f9e1fa2d391b30f65d048c1a0f..c3514e29afcc75d02f89075efce8e14a4b170c37 100644 (file)
@@ -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
 //
 // 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 <stdio.h>
-#include <string.h>            // strdup
+#include <cstdio>
+#include <cstring>             // strdup
 
 #include <plib/ul.h>
-#include <plib/ssg.h>
 
 #include <simgear/constants.h>
 #include <simgear/debug/logstream.hxx>
 #include <simgear/misc/sg_path.hxx>
-#include <simgear/misc/commands.hxx>
-#include <simgear/misc/exception.hxx>
+#include <simgear/structure/commands.hxx>
+#include <simgear/structure/exception.hxx>
+#include <simgear/sound/soundmgr_openal.hxx>
 
 #include <Main/globals.hxx>
+#include <Main/fg_init.hxx>
 #include <Main/fg_props.hxx>
 #include <Main/viewmgr.hxx>
 #include <Cockpit/panel.hxx>
 #include <Cockpit/hud.hxx>
 #include <Cockpit/panel_io.hxx>
 #include <Model/acmodel.hxx>
-#include <Autopilot/newauto.hxx>
-#include <Main/fgfs.hxx>
 
 #include "aircraft.hxx"
 
@@ -140,7 +142,7 @@ void fgReadAircraft(void) {
    globals->get_commands()->addCommand("load-aircraft", fgLoadAircraft);
 }
 
-static bool
+bool
 fgLoadAircraft (const SGPropertyNode * arg)
 {
     static const SGPropertyNode *master_freeze
@@ -162,7 +164,7 @@ fgLoadAircraft (const SGPropertyNode * arg)
     globals->restoreInitialState();
 
     fgSetString("/sim/aircraft", aircraft.c_str());
-    fgSetString("/sim/panel/path", "Aircraft/c172/Panels/c172-vfr-panel.xml");
+    fgSetString("/sim/panel/path", "Aircraft/c172p/Panels/c172-vfr-panel.xml");
 
     if ( aircraft.size() > 0 ) {
         SGPath aircraft_path(globals->get_fg_root());
@@ -186,7 +188,7 @@ fgLoadAircraft (const SGPropertyNode * arg)
     // Initialize the (new) 2D panel.
     //
     string panel_path = fgGetString("/sim/panel/path",
-                                    "Aircraft/c172/Panels/c172-vfr-panel.xml");
+                                    "Aircraft/c172p/Panels/c172-vfr-panel.xml");
 
     FGPanel *panel = fgReadPanel(panel_path);
     if (panel == 0) {
@@ -202,14 +204,8 @@ fgLoadAircraft (const SGPropertyNode * arg)
         globals->get_current_panel()->update(0);
     }
 
-    // Load the new 3D model
-    //
-    globals->get_aircraft_model()->unbind();
-    delete globals->get_aircraft_model();
-    globals->set_aircraft_model(new FGAircraftModel);
-    globals->get_aircraft_model()->init();
-    globals->get_aircraft_model()->bind();
-
+    globals->get_aircraft_model()->reinit();
+        
     // TODO:
     //    load new electrical system
     //
@@ -225,14 +221,7 @@ fgLoadAircraft (const SGPropertyNode * arg)
     t = fgInitTime();
     globals->set_time_params( t );
 
-    // Reinitialize some subsystems
-    //
-    globals->get_viewmgr()->reinit();
-    globals->get_controls()->reset_all();
-    globals->get_autopilot()->reset();
-    globals->get_aircraft_model()->reinit();
-    globals->get_subsystem("fx")->reinit();
-
+    globals->get_subsystem("xml-autopilot")->reinit();
     fgReInitSubsystems();
 
     if ( !freeze ) {