From 7249aaea330915b49fb8ef8832f0f9aa31dec4e1 Mon Sep 17 00:00:00 2001 From: ehofman Date: Sat, 13 Sep 2003 11:47:30 +0000 Subject: [PATCH] Frederic Bouvier: This patch is there to correct a problem that prevent to load static objects when specifying a relative fg-root or a different, relative, fg-scenery. It appears that there is a mix between fg-root, fg-scenery and PLIB's model-dir. It has been reported on the list that users are not able to see the buildings, especially those running the win32 builds because they run 'runfgfs.bat' that set FG_ROOT=./DATA. I decided not to use model-dir because it just add confusion and to build a valid path earlier. --- src/Main/main.cxx | 3 --- src/Model/model_panel.cxx | 17 +++++++---------- src/Scenery/tileentry.cxx | 2 ++ src/Scenery/tilemgr.cxx | 2 +- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/Main/main.cxx b/src/Main/main.cxx index 947f495a0..4f2947fbd 100644 --- a/src/Main/main.cxx +++ b/src/Main/main.cxx @@ -1676,9 +1676,6 @@ bool fgMainInit( int argc, char **argv ) { exit(-1); } - SGPath modelpath( globals->get_fg_root() ); - ssgModelPath( (char *)modelpath.c_str() ); - //////////////////////////////////////////////////////////////////// // Initialize the property-based built-in commands //////////////////////////////////////////////////////////////////// diff --git a/src/Model/model_panel.cxx b/src/Model/model_panel.cxx index 3c197f661..492b39d29 100644 --- a/src/Model/model_panel.cxx +++ b/src/Model/model_panel.cxx @@ -49,19 +49,16 @@ fgLoad3DModelPanel( const string &fg_root, const string &path, SGPropertyNode props; // Load the 3D aircraft object itself - SGPath xmlpath; SGPath modelpath = path; - if ( ulIsAbsolutePathName( path.c_str() ) ) { - xmlpath = modelpath; - } - else { - xmlpath = fg_root; - xmlpath.append(modelpath.str()); + if ( !ulIsAbsolutePathName( path.c_str() ) ) { + SGPath tmp = fg_root; + tmp.append(modelpath.str()); + modelpath = tmp; } // Check for an XML wrapper - if (xmlpath.str().substr(xmlpath.str().size() - 4, 4) == ".xml") { - readProperties(xmlpath.str(), &props); + if (modelpath.str().substr(modelpath.str().size() - 4, 4) == ".xml") { + readProperties(modelpath.str(), &props); if (props.hasValue("/path")) { modelpath = modelpath.dir(); modelpath.append(props.getStringValue("/path")); @@ -74,7 +71,7 @@ fgLoad3DModelPanel( const string &fg_root, const string &path, // Assume that textures are in // the same location as the XML file. if (model == 0) { - ssgTexturePath((char *)xmlpath.dir().c_str()); + ssgTexturePath((char *)modelpath.dir().c_str()); model = (ssgBranch *)ssgLoad((char *)modelpath.c_str()); if (model == 0) throw sg_exception("Failed to load 3D model"); diff --git a/src/Scenery/tileentry.cxx b/src/Scenery/tileentry.cxx index a22102219..c9371972e 100644 --- a/src/Scenery/tileentry.cxx +++ b/src/Scenery/tileentry.cxx @@ -676,6 +676,8 @@ FGTileEntry::load( const string &base_path, bool is_base ) SGPath custom_path; if ( token == "OBJECT_STATIC" ) { custom_path= tile_path; + } else { + custom_path = globals->get_fg_root(); } custom_path.append( name ); diff --git a/src/Scenery/tilemgr.cxx b/src/Scenery/tilemgr.cxx index f6306678e..f1046c552 100644 --- a/src/Scenery/tilemgr.cxx +++ b/src/Scenery/tilemgr.cxx @@ -280,7 +280,7 @@ void FGTileMgr::update_queues() try { ssgEntity *obj_model = - globals->get_model_lib()->load_model( globals->get_fg_root(), + globals->get_model_lib()->load_model( ".", dm->get_model_path(), globals->get_props(), globals->get_sim_time_sec() ); -- 2.39.5