- // We've moved to a new bucket, we need to scroll our
- // structures, and load in the new tiles
-
-#if 0
- // make sure load queue is flushed before doing shift
- while ( load_queue.size() ) {
- FG_LOG( FG_TERRAIN, FG_INFO,
- "Load queue not empty, flushing queue before tile shift." );
-
- FGLoadRec pending = load_queue.front();
- load_queue.pop_front();
- load_tile( pending.b, pending.index );
- }
-#endif
-
- // CURRENTLY THIS ASSUMES WE CAN ONLY MOVE TO ADJACENT TILES.
- // AT ULTRA HIGH SPEEDS THIS ASSUMPTION MAY NOT BE VALID IF
- // THE AIRCRAFT CAN SKIP A TILE IN A SINGLE ITERATION.
-
- FG_LOG( FG_TERRAIN, FG_INFO, "Updating Tile list for " << p1 );
-
- if ( (p1.get_lon() > p_last.get_lon()) ||
- ( (p1.get_lon() == p_last.get_lon()) && (p1.get_x() > p_last.get_x()) ) ) {
- FG_LOG( FG_TERRAIN, FG_INFO,
- " (East) Loading " << tile_diameter << " tiles" );
- for ( j = 0; j < tile_diameter; j++ ) {
- // scrolling East
- disable_tile( tiles[(j*tile_diameter) + 0] );
- for ( i = 0; i < tile_diameter - 1; i++ ) {
- tiles[(j*tile_diameter) + i] =
- tiles[(j*tile_diameter) + i + 1];
- }
- // load in new column
- p2 = fgBucketOffset( last_lon, last_lat, dw + 1, j - dh );
- tiles[(j*tile_diameter) + tile_diameter - 1] = sched_tile( p2 );
- }
- } else if ( (p1.get_lon() < p_last.get_lon()) ||
- ( (p1.get_lon() == p_last.get_lon()) &&
- (p1.get_x() < p_last.get_x()) ) ) {
- FG_LOG( FG_TERRAIN, FG_INFO,
- " (West) Loading " << tile_diameter << " tiles" );
- for ( j = 0; j < tile_diameter; j++ ) {
- // scrolling West
- disable_tile( tiles[(j*tile_diameter) + tile_diameter - 1] );
- for ( i = tile_diameter - 1; i > 0; i-- ) {
- tiles[(j*tile_diameter) + i] =
- tiles[(j*tile_diameter) + i - 1];
- }
- // load in new column
- p2 = fgBucketOffset( last_lon, last_lat, -dw - 1, j - dh );
- tiles[(j*tile_diameter) + 0] = sched_tile( p2 );
- }
- }
-
- if ( (p1.get_lat() > p_last.get_lat()) ||
- ( (p1.get_lat() == p_last.get_lat()) && (p1.get_y() > p_last.get_y()) ) ) {
- FG_LOG( FG_TERRAIN, FG_INFO,
- " (North) Loading " << tile_diameter << " tiles" );
- for ( i = 0; i < tile_diameter; i++ ) {
- // scrolling North
- disable_tile( tiles[0 + i] );
- for ( j = 0; j < tile_diameter - 1; j++ ) {
- tiles[(j * tile_diameter) + i] =
- tiles[((j+1) * tile_diameter) + i];
- }
- // load in new column
- p2 = fgBucketOffset( last_lon, last_lat, i - dw, dh + 1);
- tiles[((tile_diameter-1) * tile_diameter) + i] =
- sched_tile( p2 );
- }
- } else if ( (p1.get_lat() < p_last.get_lat()) ||
- ( (p1.get_lat() == p_last.get_lat()) && (p1.get_y() < p_last.get_y()) ) ) {
- FG_LOG( FG_TERRAIN, FG_INFO,
- " (South) Loading " << tile_diameter << " tiles" );
- for ( i = 0; i < tile_diameter; i++ ) {
- // scrolling South
- disable_tile( tiles[((tile_diameter-1) * tile_diameter) + i] );
- for ( j = tile_diameter - 1; j > 0; j-- ) {
- tiles[(j * tile_diameter) + i] =
- tiles[((j-1) * tile_diameter) + i];
- }
- // load in new column
- p2 = fgBucketOffset( last_lon, last_lat, i - dw, -dh - 1);
- tiles[0 + i] = sched_tile( p2 );
- }
- }