1
0
Fork 0

Modified so that a multiple-element FG_SCENERY path will work:

1. Do not stop scanning STG files after OBJECT_BASE is found.

2. Load OBJECT_BASE only once.

3. Load OBJECT only when no OBJECT_BASE has been found or when
   OBJECT_BASE was found in the same file (probably should be only the
   latter, if we constrain OBJECT_BASE always to come first).

4. Always load OBJECT_STATIC and OBJECT_SHARED.
This commit is contained in:
david 2003-10-01 22:49:06 +00:00
parent 65177d27f5
commit 03741a6936

View file

@ -625,7 +625,9 @@ FGTileEntry::load( const string &base_path, bool is_base )
ssgBranch* new_tile = new ssgBranch;
unsigned int i = 0;
while ( i < search.size() && !found_tile_base ) {
while ( i < search.size() ) {
bool has_base = false;
// Generate names for later use
string index_str = tile_bucket.gen_index_str();
@ -653,12 +655,15 @@ FGTileEntry::load( const string &base_path, bool is_base )
while ( ! in.eof() ) {
in >> token;
// Load only once (first found)
if ( token == "OBJECT_BASE" ) {
in >> name >> ::skipws;
SG_LOG( SG_TERRAIN, SG_INFO, "token = " << token
<< " name = " << name );
if (!found_tile_base) {
found_tile_base = true;
has_base = true;
SGPath custom_path = tile_path;
custom_path.append( name );
@ -672,7 +677,13 @@ FGTileEntry::load( const string &base_path, bool is_base )
} else {
delete geometry;
}
} else {
SG_LOG( SG_TERRAIN, SG_INFO, " (skipped)" );
}
// Load only if base is not in another file
} else if ( token == "OBJECT" ) {
if (!found_tile_base || has_base) {
in >> name >> ::skipws;
SG_LOG( SG_TERRAIN, SG_INFO, "token = " << token
<< " name = " << name );
@ -713,8 +724,10 @@ FGTileEntry::load( const string &base_path, bool is_base )
delete vasi_lights;
delete rwy_lights;
delete taxi_lights;
}
}
// Always OK to load
} else if ( token == "OBJECT_STATIC" ||
token == "OBJECT_SHARED" ) {
// load object info
@ -754,6 +767,8 @@ FGTileEntry::load( const string &base_path, bool is_base )
tile_path.str(),
this, obj_trans );
FGTileMgr::model_ready( dm );
// Do we even use this one?
} else if ( token == "OBJECT_TAXI_SIGN" ) {
// load object info
double lon, lat, elev, hdg;
@ -783,6 +798,8 @@ FGTileEntry::load( const string &base_path, bool is_base )
obj_trans -> addKid( custom_obj );
}
new_tile->addKid( obj_trans );
// Do we even use this one?
} else if ( token == "OBJECT_RUNWAY_SIGN" ) {
// load object info
double lon, lat, elev, hdg;
@ -812,6 +829,8 @@ FGTileEntry::load( const string &base_path, bool is_base )
obj_trans -> addKid( custom_obj );
}
new_tile->addKid( obj_trans );
// I don't think we use this, either
} else if ( token == "RWY_LIGHTS" ) {
double lon, lat, hdg, len, width;
string common, end1, end2;