-
- } else {
- // We've moved to a new bucket, we need to scroll our
- // structures, and load in the new tiles
-
- // 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,
- " Loading " << tile_diameter << "tiles" );
- for ( j = 0; j < tile_diameter; j++ ) {
- // scrolling East
- for ( i = 0; i < tile_diameter - 1; i++ ) {
- tiles[(j*tile_diameter) + i] =
- tiles[(j*tile_diameter) + i + 1];
- }
- // load in new column
- // fgBucketOffset(&p_last, &p2, dw + 1, j - dh);
- p2 = fgBucketOffset( last_lon, last_lat, dw + 1, j - dh );
- sched_tile( p2, &tiles[(j*tile_diameter) +
- tile_diameter - 1]);
- }
- } 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,
- " Loading " << tile_diameter << "tiles" );
- for ( j = 0; j < tile_diameter; j++ ) {
- // scrolling West
- for ( i = tile_diameter - 1; i > 0; i-- ) {
- tiles[(j*tile_diameter) + i] =
- tiles[(j*tile_diameter) + i - 1];
- }
- // load in new column
- // fgBucketOffset(&p_last, &p2, -dw - 1, j - dh);
- p2 = fgBucketOffset( last_lon, last_lat, -dw - 1, j - dh );
- sched_tile( p2, &tiles[(j*tile_diameter) + 0]);
- }
- }
-
- 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,
- " Loading " << tile_diameter << "tiles" );
- for ( i = 0; i < tile_diameter; i++ ) {
- // scrolling North
- for ( j = 0; j < tile_diameter - 1; j++ ) {
- tiles[(j * tile_diameter) + i] =
- tiles[((j+1) * tile_diameter) + i];
- }
- // load in new column
- // fgBucketOffset(&p_last, &p2, i - dw, dh + 1);
- p2 = fgBucketOffset( last_lon, last_lat, i - dw, dh + 1);
- sched_tile( p2, &tiles[((tile_diameter-1) *
- tile_diameter) + i]);
- }
- } 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,
- " Loading " << tile_diameter << "tiles" );
- for ( i = 0; i < tile_diameter; i++ ) {
- // scrolling South
- for ( j = tile_diameter - 1; j > 0; j-- ) {
- tiles[(j * tile_diameter) + i] =
- tiles[((j-1) * tile_diameter) + i];
- }
- // load in new column
- // fgBucketOffset(&p_last, &p2, i - dw, -dh - 1);
- p2 = fgBucketOffset( last_lon, last_lat, i - dw, -dh - 1);
- sched_tile( p2, &tiles[0 + i]);