#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:
parent
7c01632b00
commit
6745d27691
1 changed files with 25 additions and 10 deletions
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue