diff --git a/src/Model/acmodel.cxx b/src/Model/acmodel.cxx index 51f4082f3..cfc111dfc 100644 --- a/src/Model/acmodel.cxx +++ b/src/Model/acmodel.cxx @@ -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);