aboutsummaryrefslogtreecommitdiffstats
path: root/LibOVR/Src/Tracking/Tracking_SensorStateReader.cpp
diff options
context:
space:
mode:
authorBrad Davis <[email protected]>2014-09-04 14:32:18 -0700
committerBrad Davis <[email protected]>2014-09-04 14:32:18 -0700
commit32dc394487af8e4fb1b43fb852f1d5448eaf7f31 (patch)
treebe53f49e96e8e2bba1dada04197cf508b60b4eaf /LibOVR/Src/Tracking/Tracking_SensorStateReader.cpp
parent85d370840fa4d49a63331a203460fe763288d417 (diff)
Updating to windows 0.4.2
Diffstat (limited to 'LibOVR/Src/Tracking/Tracking_SensorStateReader.cpp')
-rw-r--r--LibOVR/Src/Tracking/Tracking_SensorStateReader.cpp27
1 files changed, 25 insertions, 2 deletions
diff --git a/LibOVR/Src/Tracking/Tracking_SensorStateReader.cpp b/LibOVR/Src/Tracking/Tracking_SensorStateReader.cpp
index b290480..bad4ffc 100644
--- a/LibOVR/Src/Tracking/Tracking_SensorStateReader.cpp
+++ b/LibOVR/Src/Tracking/Tracking_SensorStateReader.cpp
@@ -98,7 +98,6 @@ void SensorStateReader::RecenterPose()
const LocklessSensorState lstate = Updater->SharedSensorState.GetState();
Posed worldFromCpf = lstate.WorldFromImu.ThePose * lstate.ImuFromCpf;
-
double hmdYaw, hmdPitch, hmdRoll;
worldFromCpf.Rotation.GetEulerAngles<Axis_Y, Axis_X, Axis_Z>(&hmdYaw, &hmdPitch, &hmdRoll);
@@ -138,7 +137,7 @@ bool SensorStateReader::GetSensorStateAtTime(double absoluteTime, TrackingState&
return false;
}
- // Delta time from the last available data
+ // Delta time from the last available data
double pdt = absoluteTime - lstate.WorldFromImu.TimeInSeconds;
static const double maxPdt = 0.1;
@@ -167,6 +166,7 @@ bool SensorStateReader::GetSensorStateAtTime(double absoluteTime, TrackingState&
ss.LeveledCameraPose = Posef(CenteredFromWorld * worldFromLeveledCamera);
ss.RawSensorData = lstate.RawSensorData;
+ ss.LastVisionProcessingTime = lstate.LastVisionProcessingTime;
return true;
}
@@ -203,5 +203,28 @@ uint32_t SensorStateReader::GetStatus() const
return lstate.StatusFlags;
}
+void SensorStateReader::LoadProfileCenteredFromWorld(Profile* profile)
+{
+ double camerastate[7];
+ if (profile->GetDoubleValues(OVR_KEY_CAMERA_POSITION, camerastate, 7) == 0)
+ {
+ for (int i = 0; i < 7; i++) camerastate[i] = 0;
+ camerastate[3] = 1;//no offset. by default, give the quaternion w component value 1
+ }
+
+ OVR::Quatd orientation = OVR::Quatd(camerastate[0], camerastate[1], camerastate[2], camerastate[3]);
+ OVR::Vector3d position = OVR::Vector3d(camerastate[4], camerastate[5], camerastate[6]);
+
+ CenteredFromWorld = OVR::Posed(orientation, position);
+
+}
+
+void SensorStateReader::SaveProfileCenteredFromWorld(Profile* profile)
+{
+ OVR::Quatd rot = CenteredFromWorld.Rotation;
+ OVR::Vector3d trans = CenteredFromWorld.Translation;
+ double vals[7] = { rot.x, rot.y, rot.z, rot.w, trans.x, trans.y, trans.z };
+ profile->SetDoubleValues(OVR_KEY_CAMERA_POSITION, vals, 7);
+}
}} // namespace OVR::Tracking