| 50 | }; |
| 51 | |
| 52 | static TrackingData getOpenVRPos(vr::EVRInitError &err) |
| 53 | { |
| 54 | TrackingData data; |
| 55 | std::unique_lock<std::mutex> lock(openvrMutex); |
| 56 | if (!openvrSystem) { |
| 57 | initOpenVR(err); |
| 58 | } |
| 59 | |
| 60 | if (openvrSystem && vr::VRCompositor() && |
| 61 | openvrSystem->IsTrackedDeviceConnected(0)) { |
| 62 | vr::TrackedDevicePose_t poses[vr::k_unMaxTrackedDeviceCount]; |
| 63 | openvrSystem->GetDeviceToAbsoluteTrackingPose( |
| 64 | vr::TrackingUniverseStanding, 0.0, poses, |
| 65 | vr::k_unMaxTrackedDeviceCount); |
| 66 | auto hmdPose = poses[vr::k_unTrackedDeviceIndex_Hmd]; |
| 67 | auto mat = hmdPose.mDeviceToAbsoluteTracking.m; |
| 68 | data.x = mat[0][3]; |
| 69 | data.y = mat[1][3]; |
| 70 | data.z = mat[2][3]; |
| 71 | data.valid = true; |
| 72 | } |
| 73 | return data; |
| 74 | } |
| 75 | |
| 76 | bool MacroConditionOpenVR::CheckCondition() |
| 77 | { |
no test coverage detected