Add functions to use absolute tracking
[libs/vr.git] / source / headtrackingcamera.cpp
index 95868e2f12f107a512dda7d39e1dca0dc8fdce14..42eedd5d90caa21543776a47d95049069b99e587 100644 (file)
@@ -4,14 +4,20 @@ namespace Msp {
 namespace VR {
 
 HeadTrackingCamera::HeadTrackingCamera(const GL::Camera &c):
-       base_camera(c)
+       base_camera(c),
+       elevation_offset(0)
 { }
 
+void HeadTrackingCamera::set_elevation_offset(float o)
+{
+       elevation_offset = o;
+}
+
 void HeadTrackingCamera::update_from_matrix(const GL::Matrix &hmd_matrix)
 {
        GL::Matrix matrix = base_camera.get_object_matrix()*hmd_matrix;
 
-       set_position(matrix*GL::Vector3());
+       set_position(matrix*GL::Vector3()+base_camera.get_up_direction()*elevation_offset);
        set_look_direction((matrix*GL::Vector4(0, 0, -1, 0)).slice<3>(0));
        set_up_direction((matrix*GL::Vector4(0, 1, 0, 0)).slice<3>(0));