- // Calculate the relative view position
- // from the scenery center.
- // aka Relative View Position
- sgdVec3 scenery_center;
- sgdSetVec3(scenery_center,
- scenery.get_next_center().x(),
- scenery.get_next_center().y(),
- scenery.get_next_center().z());
- sgdVec3 view_pos;
- sgdSubVec3(view_pos, _absolute_view_pos, scenery_center);
- sgSetVec3(_relative_view_pos, view_pos);
+// copy results from location class to viewer...
+// FIXME: some of these should be changed to reference directly to FGLocation...
+void
+FGViewer::copyLocationData()
+{
+ // Get our friendly vectors from the eye location...
+ sgCopyVec3(_zero_elev_view_pos, _location->get_zero_elev());
+ sgCopyVec3(_relative_view_pos, _location->get_view_pos());
+ sgdCopyVec3(_absolute_view_pos, _location->get_absolute_view_pos());
+ sgCopyMat4(UP, _location->getCachedUpMatrix());
+ sgCopyVec3(_world_up, _location->get_world_up());
+ // these are the vectors that the sun and moon code like to get...
+ sgCopyVec3(_surface_east, _location->get_surface_east());
+ sgCopyVec3(_surface_south, _location->get_surface_south());
+
+ // Update viewer's postion data for the eye location...
+ _lon_deg = _location->getLongitude_deg();
+ _lat_deg = _location->getLatitude_deg();
+ _alt_ft = _location->getAltitudeASL_ft();
+ _roll_deg = _location->getRoll_deg();
+ _pitch_deg = _location->getPitch_deg();
+ _heading_deg = _location->getHeading_deg();
+
+ // Update viewer's postion data for the target (at object) location
+ if (_type == FG_LOOKAT) {
+ _target_lon_deg = _target_location->getLongitude_deg();
+ _target_lat_deg = _target_location->getLatitude_deg();
+ _target_alt_ft = _target_location->getAltitudeASL_ft();
+ _target_roll_deg = _target_location->getRoll_deg();
+ _target_pitch_deg = _target_location->getPitch_deg();
+ _target_heading_deg = _target_location->getHeading_deg();
+ }