X-Git-Url: http://git.tdb.fi/?p=libs%2Fvr.git;a=blobdiff_plain;f=source%2Fmotioncontroller.cpp;fp=source%2Fmotioncontroller.cpp;h=0f82911031690b29ecb9a2c49fec26e7b13c8b55;hp=0000000000000000000000000000000000000000;hb=774cc129d93a0001c36434f47ec0614c653824be;hpb=2acdfcc95c317f30e725e17f0d372fce050830ef diff --git a/source/motioncontroller.cpp b/source/motioncontroller.cpp new file mode 100644 index 0000000..0f82911 --- /dev/null +++ b/source/motioncontroller.cpp @@ -0,0 +1,43 @@ +#include +#include "headtrackingcamera.h" +#include "motioncontroller.h" +#include "stereoview.h" + +using namespace std; + +namespace Msp { +namespace VR { + +MotionController::MotionController(): + view(0) +{ } + +MotionController::~MotionController() +{ + detach_from_view(); +} + +void MotionController::attach_to_view(StereoView &v) +{ + detach_from_view(); + view = &v; + view->add_controller(*this); +} + +void MotionController::detach_from_view() +{ + if(view) + view->remove_controller(*this); + view = 0; +} + +void MotionController::update_from_matrix(const GL::Matrix &m) +{ + matrix = m; + if(view) + if(const HeadTrackingCamera *head_camera = view->get_head_camera()) + matrix = head_camera->get_base_matrix()*matrix; +} + +} // namespace VR +} // namespace Msp