- }
-}
-
-void
-FGFX::update_fx_late(double dt)
-{
- SGSoundMgr *smgr = globals->get_soundmgr();
- if (!smgr->is_working()) {
- return;
- }
-
- smgr->update(dt);
- update_pos_and_orientation(smgr, dt);
-}
-
-/**
- * add a sound sample to the message queue which is played sequentially
- * in order.
- */
-void
-FGFX::play_message( SGSoundSample *_sample )
-{
- _samplequeue.push( _sample );
-}
-void
-FGFX::play_message( const std::string& path, const std::string& fname, double volume )
-{
- if (globals->get_soundmgr()->is_working() == true) {
- SGSoundSample *sample;
- sample = new SGSoundSample( path.c_str(), fname.c_str() );
- sample->set_volume( volume );
- play_message( sample );
- }
-}
-
-void
-FGFX::update_pos_and_orientation(SGSoundMgr *smgr, double dt)
-{
- SGModelPlacement *model = globals->get_aircraft_model()->get3DModel();
- FGViewer *observer = globals->get_current_view();
-
- // Right now we make a simplifying assumption that the primary
- // aircraft is the source of all sounds and that all sounds are
- // positioned in the aircraft base
- // EMH: Note: this is fine, to hear multiple aircraft simulataniously
- // we just have to trigger one instance of the FGFX class for every
- // aircraft
-
- // get the orientation
- const SGQuatd view_or = observer->getViewOrientation();
- SGQuatd surf_or = SGQuatd::fromLonLat(observer->getPosition());
-
- SGQuatd model_or = SGQuatd::fromYawPitchRollDeg(
- model->getHeadingDeg(),
- model->getPitchDeg(),
- model->getRollDeg());
-
- // get the up and at vector in the aircraft base
- // (ok, the up vector is a down vector, but the coordinates
- // are finally calculated in a left hand system and openal
- // lives in a right hand system. Therefore we need to pass
- // the down vector to get correct stereo sound.)
- SGVec3d sgv_up
- = model_or.rotateBack(surf_or.rotateBack(view_or.rotate(SGVec3d(0,1,0))));
- SGVec3d sgv_at
- = model_or.rotateBack(surf_or.rotateBack(view_or.rotate(SGVec3d(0,0,1))));
-
- // get the location data for the primary FDM (now hardcoded to ac model)...
- // EMH: to add multiple sound sources this should be replaced
- SGVec3d absolute_view_pos = SGVec3d::fromGeod(model->getPosition());