1
0
Fork 0

#858: Fix loading issue with aircraft models in "--fg-aircraft" directories

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...).
This commit is contained in:
ThorstenB 2012-09-04 23:57:25 +02:00
parent 7c01632b00
commit 6745d27691

View file

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