From 6e5673de21e199f8a26bdd50b231177adeb96ca5 Mon Sep 17 00:00:00 2001 From: ehofman Date: Mon, 2 Nov 2009 10:31:42 +0000 Subject: [PATCH] Position and orientation fixes for the sound code, thanks to Tim Moore --- src/Main/viewmgr.cxx | 8 +------- src/Model/acmodel.cxx | 9 ++++----- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/Main/viewmgr.cxx b/src/Main/viewmgr.cxx index 60cfdb437..6dbc5f2ad 100644 --- a/src/Main/viewmgr.cxx +++ b/src/Main/viewmgr.cxx @@ -298,14 +298,8 @@ FGViewMgr::update (double dt) // update audio listener values // set the viewer posotion in Cartesian coordinates in meters - SGVec3d offs = SGVec3d( loop_view->getXOffset_m(), - loop_view->getYOffset_m(), - loop_view->getZOffset_m()); - smgr->set_position_offset( offs ); smgr->set_position_geod( loop_view->getPosition() ); - - smgr->set_orientation( loop_view->getViewOrientation(), - loop_view->getViewOrientationOffset() ); + smgr->set_orientation( loop_view->getViewOrientation() ); // get the model velocity SGVec3f velocity = SGVec3f::zeros(); diff --git a/src/Model/acmodel.cxx b/src/Model/acmodel.cxx index 3b5ccfb13..187e27042 100644 --- a/src/Model/acmodel.cxx +++ b/src/Model/acmodel.cxx @@ -124,24 +124,23 @@ FGAircraftModel::update (double dt) _aircraft->update(); // update model's audio sample values - _fx->set_position_geod( _aircraft->getPosition() ); + SGGeod position = _aircraft->getPosition(); + _fx->set_position_geod( position ); SGQuatd orient = SGQuatd::fromYawPitchRollDeg(_heading->getDoubleValue(), _pitch->getDoubleValue(), _roll->getDoubleValue()); _fx->set_orientation( orient ); -#if 0 SGVec3d vel = SGVec3d( _speed_n->getFloatValue(), _speed_e->getFloatValue(), _speed_d->getFloatValue() ); if ( vel[0] || vel[1] || vel[2] ) { - SGQuatd q(-0.5, -0.5, 0.5, 0.5); - _velocity = toVec3f( q.backTransform( vel ) ); + SGQuatd hlOr = SGQuatd::fromLonLat(position); + _velocity = toVec3f( hlOr.backTransform( vel * SG_FEET_TO_METER ) ); } else _velocity = SGVec3f::zeros(); -#endif _fx->set_velocity( _velocity ); }