current_bucket.make_bad();
longitude = latitude = -1000.0;
- last_longitude = last_latitude = -1000.0;
return 1;
}
// schedule a tile for loading
-void FGTileMgr::sched_tile( const SGBucket& b ) {
+void FGTileMgr::sched_tile( const SGBucket& b, const bool is_inner_ring ) {
// see if tile already exists in the cache
FGTileEntry *t = tile_cache.get_tile( b );
// delete.) Try again later
delete e;
}
+ } else {
+ t->set_inner_ring( is_inner_ring );
}
}
xrange = (int)(vis / tile_width) + 1;
yrange = (int)(vis / tile_height) + 1;
- if ( xrange < 1 ) { xrange /= 1; }
+ if ( xrange < 1 ) { xrange = 1; }
if ( yrange < 1 ) { yrange = 1; }
// note * 2 at end doubles cache size (for fdm and viewer)
tile_cache.set_max_cache_size( (2*xrange + 2) * (2*yrange + 2) * 2 );
-
/*
cout << "xrange = " << xrange << " yrange = " << yrange << endl;
cout << "max cache size = " << tile_cache.get_max_cache_size()
<< " current cache size = " << tile_cache.get_size() << endl;
*/
+ // clear the inner ring flags so we can set them below. This
+ // prevents us from having "true" entries we aren't able to find
+ // to get rid of if we teleport a long ways away from the current
+ // location.
+ tile_cache.clear_inner_ring_flags();
+
SGBucket b;
// schedule center tile first so it can be loaded first
b = sgBucketOffset( longitude, latitude, 0, 0 );
- sched_tile( b );
+ sched_tile( b, true );
int x, y;
for ( y = -1; y <= 1; ++y ) {
if ( x != 0 || y != 0 ) {
b = sgBucketOffset( longitude, latitude, x, y );
- sched_tile( b );
+ sched_tile( b, true );
}
}
}
for ( y = -yrange; y <= yrange; ++y ) {
if ( x < -1 || x > 1 || y < -1 || y > 1 ) {
SGBucket b = sgBucketOffset( longitude, latitude, x, y );
- sched_tile( b );
+ sched_tile( b, false );
}
}
}
#endif
e->add_ssg_nodes( globals->get_scenery()->get_terrain_branch(),
globals->get_scenery()->get_gnd_lights_root(),
- globals->get_scenery()->get_taxi_lights_root(),
+ globals->get_scenery()->get_vasi_lights_root(),
globals->get_scenery()->get_rwy_lights_root(),
globals->get_scenery()->get_taxi_lights_root() );
// cout << "Adding ssg nodes for "
// save bucket...
previous_bucket = current_bucket;
- // no reason to update this if we haven't moved...
- if ( longitude != last_longitude || latitude != last_latitude ) {
- // update current elevation...
- if ( updateCurrentElevAtPos( abs_pos_vector, altitude_m,
- location->get_tile_center() ) )
- {
- last_longitude = longitude;
- last_latitude = latitude;
- }
- }
+ updateCurrentElevAtPos( abs_pos_vector, altitude_m,
+ location->get_tile_center() );
return 1;
}