]> git.mxchange.org Git - flightgear.git/commitdiff
#858: Fix loading issue with aircraft models in "--fg-aircraft" directories
authorThorstenB <brehmt@gmail.com>
Tue, 4 Sep 2012 21:57:25 +0000 (23:57 +0200)
committerThorstenB <brehmt@gmail.com>
Tue, 4 Sep 2012 21:57:25 +0000 (23:57 +0200)
Something after FG 2.8.0 has broken loading aircraft models from
--fg-aircraft directories. Issue is fixed by resolving the aircraft path
in FGAircraftModel (though this module itself hasn't changed and things
were working before...).

src/Model/acmodel.cxx

index 51f4082f316471c095257cf776d04e895914f750..cfc111dfc74b1f396e2ea5cc0e906c1e5788d444 100644 (file)
@@ -63,19 +63,34 @@ FGAircraftModel::~FGAircraftModel ()
 void 
 FGAircraftModel::init ()
 {
+  osg::Node *model = NULL;
+
   _aircraft = new SGModelPlacement;
   string path = fgGetString("/sim/model/path", "Models/Geometry/glider.ac");
-  try {
-    osg::Node *model = fgLoad3DModelPanel( path, globals->get_props());
-    _aircraft->init( model );
-  } catch (const sg_exception &ex) {
-    SG_LOG(SG_AIRCRAFT, SG_ALERT, "Failed to load aircraft from " << path << ':');
-    SG_LOG(SG_AIRCRAFT, SG_ALERT, "  " << ex.getFormattedMessage());
-    SG_LOG(SG_AIRCRAFT, SG_ALERT, "(Falling back to glider.ac.)");
-    osg::Node *model = fgLoad3DModelPanel( "Models/Geometry/glider.ac",
-                                           globals->get_props());
-    _aircraft->init( model );
+
+  SGPath resolvedPath = globals->resolve_aircraft_path(path);
+  if (resolvedPath.isNull())
+  {
+      SG_LOG(SG_AIRCRAFT, SG_ALERT, "Failed to load aircraft from " << path << ':');
+  }
+  else
+  {
+      try {
+        model = fgLoad3DModelPanel( resolvedPath.str(), globals->get_props());
+      } catch (const sg_exception &ex) {
+        SG_LOG(SG_AIRCRAFT, SG_ALERT, "Failed to load aircraft from " << path << ':');
+        SG_LOG(SG_AIRCRAFT, SG_ALERT, "  " << ex.getFormattedMessage());
+        SG_LOG(SG_AIRCRAFT, SG_ALERT, "(Falling back to glider.ac.)");
+      }
   }
+
+  if (!model)
+  {
+      model = fgLoad3DModelPanel( "Models/Geometry/glider.ac",
+                                  globals->get_props());
+  }
+  _aircraft->init( model );
+
   osg::Node* node = _aircraft->getSceneGraph();
   // Do not do altitude computations with that model
   node->setNodeMask(~SG_NODEMASK_TERRAIN_BIT);