]> git.tdb.fi Git - libs/vr.git/blobdiff - source/oculusriftcamera.cpp
Convert Oculus code to use SDK 0.4.4
[libs/vr.git] / source / oculusriftcamera.cpp
index 9b85d12e8f474e32d5bb4372d271e0263e785fa0..8b98adb25fcd520b06450c2cfba3e806f8d3abd2 100644 (file)
@@ -1,5 +1,4 @@
 #include "oculusriftcamera.h"
-#include "oculusriftcamera_private.h"
 #include "oculusriftdevice.h"
 #include "oculusriftdevice_private.h"
 
@@ -8,23 +7,23 @@ namespace VR {
 
 OculusRiftCamera::OculusRiftCamera(const OculusRiftDevice &d, const GL::Camera &c):
        device(d),
-       base_camera(c),
-       priv(new Private)
+       base_camera(c)
 {
        const OculusRiftDevice::Private &dev_priv = device.get_private();
-       priv->ovr_sensor = dev_priv.ovr_hmd->GetSensor();
-       priv->fusion.AttachToSensor(priv->ovr_sensor);
+       unsigned supported = ovrTrackingCap_Orientation|ovrTrackingCap_MagYawCorrection;
+       ovrHmd_ConfigureTracking(dev_priv.ovr_hmd, supported, 0);
 }
 
 OculusRiftCamera::~OculusRiftCamera()
 {
-       delete priv;
 }
 
 void OculusRiftCamera::update()
 {
-       OVR::Matrix4f sensor_matrix = priv->fusion.GetOrientation();
-       const float *m = &sensor_matrix.M[0][0];
+       ovrTrackingState state = ovrHmd_GetTrackingState(device.get_private().ovr_hmd, ovr_GetTimeInSeconds());
+       OVR::Posef head_pose = state.HeadPose.ThePose;
+       OVR::Matrix4f tracking_matrix(head_pose.Rotation);
+       const float *m = &tracking_matrix.M[0][0];
 
        const GL::Vector3 &base_look = base_camera.get_look_direction();
        GL::Vector3 base_right = normalize(cross(base_look, base_camera.get_up_direction()));
@@ -34,6 +33,8 @@ void OculusRiftCamera::update()
        set_up_direction(base_right*m[1]+base_up*m[5]-base_look*m[9]);
        set_look_direction(-base_right*m[2]-base_up*m[6]+base_look*m[10]);
        set_depth_clip(base_camera.get_near_clip(), base_camera.get_far_clip());
+       set_field_of_view(base_camera.get_field_of_view());
+       set_aspect(base_camera.get_aspect());
 }
 
 } // namespace VR