From: Mathias F. <fro...@ba...> - 2009-03-07 14:10:12
|
Update of /var/cvs/FlightGear-0.9/source/src/Main In directory baron.flightgear.org:/tmp/cvs-serv11218/src/Main Modified Files: renderer.cxx viewer.cxx viewer.hxx Log Message: ompute some vectors from the current view when they are used. Simplifies the update hell in the viewer a bit. Modified Files: src/Main/renderer.cxx src/Main/viewer.cxx src/Main/viewer.hxx src/Time/tmp.cxx Index: renderer.cxx =================================================================== RCS file: /var/cvs/FlightGear-0.9/source/src/Main/renderer.cxx,v retrieving revision 1.118 retrieving revision 1.119 diff -C 2 -r1.118 -r1.119 *** renderer.cxx 18 Nov 2008 22:45:57 -0000 1.118 --- renderer.cxx 7 Mar 2009 13:32:41 -0000 1.119 *************** *** 624,636 **** static SGSkyState sstate; ! sstate.view_pos = toVec3f(current__view->get_view_pos()); ! sstate.zero_elev = toVec3f(current__view->get_zero_elev()); ! sstate.view_up = current__view->get_world_up(); ! sstate.lon = current__view->getLongitude_deg() ! * SGD_DEGREES_TO_RADIANS; ! sstate.lat = current__view->getLatitude_deg() ! * SGD_DEGREES_TO_RADIANS; ! sstate.alt = current__view->getAltitudeASL_ft() ! * SG_FEET_TO_METER; sstate.spin = l->get_sun_rotation(); sstate.gst = globals->get_time_params()->getGst(); --- 624,637 ---- static SGSkyState sstate; ! SGVec3d viewPos = current__view->getViewPosition(); ! sstate.view_pos = toVec3f(viewPos); ! SGGeod geodViewPos = SGGeod::fromCart(viewPos); ! SGGeod geodZeroViewPos = SGGeod::fromGeodM(geodViewPos, 0); ! sstate.zero_elev = toVec3f(SGVec3d::fromGeod(geodZeroViewPos)); ! SGQuatd hlOr = SGQuatd::fromLonLat(geodViewPos); ! sstate.view_up = toVec3f(hlOr.backTransform(-SGVec3d::e3())); ! sstate.lon = geodViewPos.getLongitudeRad(); ! sstate.lat = geodViewPos.getLatitudeRad(); ! sstate.alt = geodViewPos.getElevationM(); sstate.spin = l->get_sun_rotation(); sstate.gst = globals->get_time_params()->getGst(); Index: viewer.cxx =================================================================== RCS file: /var/cvs/FlightGear-0.9/source/src/Main/viewer.cxx,v retrieving revision 1.29 retrieving revision 1.30 diff -C 2 -r1.29 -r1.30 *** viewer.cxx 26 Dec 2008 12:28:06 -0000 1.29 --- viewer.cxx 7 Mar 2009 13:32:42 -0000 1.30 *************** *** 418,430 **** } - SGGeod geodEyePoint = SGGeod::fromCart(_absolute_view_pos); - geodEyePoint.setElevationM(0); - _zero_elev = SGVec3d::fromGeod(geodEyePoint); - - SGQuatd hlOr = SGQuatd::fromLonLat(geodEyePoint); - _surface_south = toVec3f(hlOr.backTransform(-SGVec3d::e1())); - _surface_east = toVec3f(hlOr.backTransform(SGVec3d::e2())); - _world_up = toVec3f(hlOr.backTransform(-SGVec3d::e3())); - // Update viewer's postion data for the eye location... _lon_deg = _location->getLongitude_deg(); --- 418,421 ---- Index: viewer.hxx =================================================================== RCS file: /var/cvs/FlightGear-0.9/source/src/Main/viewer.hxx,v retrieving revision 1.19 retrieving revision 1.20 diff -C 2 -r1.19 -r1.20 *** viewer.hxx 1 Aug 2008 15:57:41 -0000 1.19 --- viewer.hxx 7 Mar 2009 13:32:42 -0000 1.20 *************** *** 217,229 **** // Vectors and positions... - // Get zero elev - const SGVec3d& get_zero_elev() {if ( _dirty ) { recalc(); } return _zero_elev; } - // Get world up vector - const SGVec3f& get_world_up() {if ( _dirty ) { recalc(); } return _world_up; } - // Get surface east vector - const SGVec3f& get_surface_east() { if ( _dirty ) { recalc(); } return _surface_east; } - // Get surface south vector - const SGVec3f& get_surface_south() {if ( _dirty ) { recalc(); } return _surface_south; } - const SGVec3d& get_view_pos() { if ( _dirty ) { recalc(); } return _absolute_view_pos; } const SGVec3d& getViewPosition() { if ( _dirty ) { recalc(); } return _absolute_view_pos; } --- 217,220 ---- *************** *** 355,372 **** double _aspect_ratio_multiplier; - // cartesion coordinates of current lon/lat if at sea level - SGVec3d _zero_elev; - - // surface vector heading south - SGVec3f _surface_south; - - // surface vector heading east (used to unambiguously align sky - // with sun) - SGVec3f _surface_east; - - // world up vector (normal to the plane tangent to the earth's - // surface at the spot we are directly above - SGVec3f _world_up; - // camera group controled by this view osg::ref_ptr<flightgear::CameraGroup> _cameraGroup; --- 346,349 ---- |