]> git.tdb.fi Git - libs/vr.git/blob - source/motioncontroller.cpp
Add support for motion controllers
[libs/vr.git] / source / motioncontroller.cpp
1 #include <stdexcept>
2 #include "headtrackingcamera.h"
3 #include "motioncontroller.h"
4 #include "stereoview.h"
5
6 using namespace std;
7
8 namespace Msp {
9 namespace VR {
10
11 MotionController::MotionController():
12         view(0)
13 { }
14
15 MotionController::~MotionController()
16 {
17         detach_from_view();
18 }
19
20 void MotionController::attach_to_view(StereoView &v)
21 {
22         detach_from_view();
23         view = &v;
24         view->add_controller(*this);
25 }
26
27 void MotionController::detach_from_view()
28 {
29         if(view)
30                 view->remove_controller(*this);
31         view = 0;
32 }
33
34 void MotionController::update_from_matrix(const GL::Matrix &m)
35 {
36         matrix = m;
37         if(view)
38                 if(const HeadTrackingCamera *head_camera = view->get_head_camera())
39                         matrix = head_camera->get_base_matrix()*matrix;
40 }
41
42 } // namespace VR
43 } // namespace Msp