- counter_hack = (counter_hack + 1) % 5;
- sgdVec3 sc;
- sgdSetVec3( sc, scenery.center[0], scenery.center[1], scenery.center[2] );
-
- if ( scenery.center == Point3D(0.0) ) {
- // initializing
- cout << "initializing scenery current elevation ... " << endl;
- sgdVec3 tmp_abs_view_pos;
-
- Point3D geod_pos = Point3D( longitude * SGD_DEGREES_TO_RADIANS,
- latitude * SGD_DEGREES_TO_RADIANS,
- 0.0);
- Point3D tmp = sgGeodToCart( geod_pos );
- scenery.center = tmp;
- sgdSetVec3( tmp_abs_view_pos, tmp.x(), tmp.y(), tmp.z() );
-
- // cout << "abs_view_pos = " << tmp_abs_view_pos << endl;
- prep_ssg_nodes();
-
- double tmp_elev;
- if ( fgCurrentElev(tmp_abs_view_pos, sc, &hit_list,
- &tmp_elev, &scenery.cur_radius, scenery.cur_normal) )
- {
- scenery.cur_elev = tmp_elev;
- } else {
- scenery.cur_elev = 0.0;
- }
- cout << "result = " << scenery.cur_elev << endl;
- } else {
- // cout << "abs view pos = " << current_view.abs_view_pos
- // << " view pos = " << current_view.view_pos << endl;
- double tmp_elev;
- if ( fgCurrentElev(globals->get_current_view()->get_abs_view_pos(),
- sc, &hit_list,
- &tmp_elev, &scenery.cur_radius, scenery.cur_normal) )
- {
- scenery.cur_elev = tmp_elev;
- } else {
- scenery.cur_elev = 0.0;
- }
+
+ // 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, center)) {
+ last_longitude = longitude;
+ last_latitude = latitude;
+ }