# include "config.h"
#endif
-#include <string.h> // strcmp
+#include "viewmgr.hxx"
-#include <plib/sg.h>
+#include <string.h> // strcmp
#include <simgear/compiler.h>
-
+#include <simgear/sound/soundmgr_openal.hxx>
#include <Model/acmodel.hxx>
-
-#include "viewmgr.hxx"
-
+#include <Main/viewer.hxx>
+#include <Main/fg_props.hxx>
// Constructor
FGViewMgr::FGViewMgr( void ) :
config_list(fgGetNode("/sim", true)->getChildren("view")),
current(0)
{
+ smgr = (SGSoundMgr *)globals->get_subsystem("soundmgr");
}
// Destructor
do_axes();
view->update(dt);
abs_viewer_position = loop_view->getViewPosition();
+
+ // update audio listener values
+ // set the viewer posotion in Cartesian coordinates in meters
+ smgr->set_position(abs_viewer_position);
+ smgr->set_orientation(loop_view->getViewOrientation());
+ smgr->set_velocity(SGVec3f(0,0,0)); // TODO: in meters per second
}
void
get_current_view()->getInternal());
}
+void FGViewMgr::clear()
+{
+ views.clear();
+}
+
+FGViewer*
+FGViewMgr::get_current_view()
+{
+ if ( current < (int)views.size() ) {
+ return views[current];
+ } else {
+ return NULL;
+ }
+}
+
+const FGViewer*
+FGViewMgr::get_current_view() const
+{
+ if ( current < (int)views.size() ) {
+ return views[current];
+ } else {
+ return NULL;
+ }
+}
+
+
+FGViewer*
+FGViewMgr::get_view( int i )
+{
+ if ( i < 0 ) { i = 0; }
+ if ( i >= (int)views.size() ) { i = views.size() - 1; }
+ return views[i];
+}
+
+const FGViewer*
+FGViewMgr::get_view( int i ) const
+{
+ if ( i < 0 ) { i = 0; }
+ if ( i >= (int)views.size() ) { i = views.size() - 1; }
+ return views[i];
+}
+
+FGViewer*
+FGViewMgr::next_view()
+{
+ setView((current+1 < (int)views.size()) ? (current + 1) : 0);
+ view_number->fireValueChanged();
+ return views[current];
+}
+
+FGViewer*
+FGViewMgr::prev_view()
+{
+ setView((0 < current) ? (current - 1) : (views.size() - 1));
+ view_number->fireValueChanged();
+ return views[current];
+}
+void
+FGViewMgr::add_view( FGViewer * v )
+{
+ views.push_back(v);
+ v->init();
+}
+
double
FGViewMgr::getViewHeadingOffset_deg () const
{