+// timer event driven call to scheduler for the purpose of refreshing the tile timestamps
+void FGTileMgr::refresh_view_timestamps() {
+ SG_LOG( SG_TERRAIN, SG_INFO,
+ "Refreshing timestamps for " << current_bucket.get_center_lon() << " " << current_bucket.get_center_lat() );
+ schedule_needed(fgGetDouble("/environment/visibility-m"), current_bucket);
+}
+
+// check and set current tile and scenery center...
+void FGTileMgr::setCurrentTile(double longitude, double latitude) {
+
+ // check tile cache entry...
+ current_bucket.set_bucket( longitude, latitude );
+ if ( tile_cache.exists( current_bucket ) ) {
+ current_tile = tile_cache.get_tile( current_bucket );
+ globals->get_scenery()->set_next_center( current_tile->center );
+ } else {
+ SG_LOG( SG_TERRAIN, SG_WARN, "Tile not found (Ok if initializing)" );
+ globals->get_scenery()->set_next_center( Point3D(0.0) );
+ }
+}
+
+int FGTileMgr::updateCurrentElevAtPos(sgdVec3 abs_pos_vector, Point3D center) {
+
+ sgdVec3 sc;
+
+ sgdSetVec3( sc,
+ center[0],
+ center[1],
+ center[2]);
+
+ // overridden with actual values if a terrain intersection is
+ // found
+ double hit_elev = -9999.0;
+ double hit_radius = 0.0;
+ sgdVec3 hit_normal = { 0.0, 0.0, 0.0 };
+
+ bool hit = false;
+ if ( fabs(sc[0]) > 1.0 || fabs(sc[1]) > 1.0 || fabs(sc[2]) > 1.0 ) {
+ // scenery center has been properly defined so any hit
+ // should be valid (and not just luck)
+ hit = fgCurrentElev(abs_pos_vector,
+ sc,
+ current_tile->get_terra_transform(),
+ &hit_list,
+ &hit_elev,
+ &hit_radius,
+ hit_normal);
+ }
+
+ if ( hit ) {
+ globals->get_scenery()->set_cur_elev( hit_elev );
+ globals->get_scenery()->set_cur_radius( hit_radius );
+ globals->get_scenery()->set_cur_normal( hit_normal );
+ } else {
+ globals->get_scenery()->set_cur_elev( -9999.0 );
+ globals->get_scenery()->set_cur_radius( 0.0 );
+ globals->get_scenery()->set_cur_normal( hit_normal );
+ }
+ return hit;
+}
+
+void FGTileMgr::prep_ssg_nodes(float vis) {
+
+ // traverse the potentially viewable tile list and update range
+ // selector and transform