]> git.tdb.fi Git - libs/vr.git/blobdiff - source/stereoview.cpp
Add support for motion controllers
[libs/vr.git] / source / stereoview.cpp
index 73be19c4527a420aacad992148a56ac25573c2cf..f08cd79ea1ef7166506265ff46dbee457d4df616 100644 (file)
@@ -1,5 +1,6 @@
 #include <msp/gl/renderer.h>
 #include "headtrackingcamera.h"
+#include "motioncontroller.h"
 #include "stereocombiner.h"
 #include "stereoview.h"
 
@@ -59,11 +60,27 @@ void StereoView::set_strabismus(const Geometry::Angle<float> &s)
        strabismus = s;
 }
 
+void StereoView::add_controller(MotionController &controller)
+{
+       if(find(controllers.begin(), controllers.end(), &controller)==controllers.end())
+               controllers.push_back(&controller);
+}
+
+void StereoView::remove_controller(MotionController &controller)
+{
+       vector<MotionController *>::iterator i = find(controllers.begin(), controllers.end(), &controller);
+       if(i!=controllers.end())
+               controllers.erase(i);
+}
+
 void StereoView::setup_frame() const
 {
        if(head_camera)
                head_camera->update();
 
+       for(vector<MotionController *>::const_iterator i=controllers.begin(); i!=controllers.end(); ++i)
+               (*i)->update();
+
        EyeParams params;
        params.fov = combiner.get_field_of_view();
        if(params.fov==Geometry::Angle<float>::zero())