Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2071)

Unified Diff: device/vr/openvr/openvr_device.cc

Issue 2825203004: Added support for OpenVR controllers (Closed)
Patch Set: Read pose by vr::TrackingUniverseSeated Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/vr/openvr/openvr_device.h ('k') | device/vr/openvr/openvr_device_provider.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/vr/openvr/openvr_device.cc
diff --git a/device/vr/openvr/openvr_device.cc b/device/vr/openvr/openvr_device.cc
index f129d977e0a77510ee14f763cf9f171dcea8b523..b0cee09deb347d8fbfe7192334a75dc6e2ce1fbf 100644
--- a/device/vr/openvr/openvr_device.cc
+++ b/device/vr/openvr/openvr_device.cc
@@ -76,17 +76,12 @@ std::vector<float> HmdMatrix34ToWebVRTransformMatrix(
namespace device {
-OpenVRDevice::OpenVRDevice() {}
+OpenVRDevice::OpenVRDevice(vr::IVRSystem* vr) : vr_system_(vr) {}
OpenVRDevice::~OpenVRDevice() {}
void OpenVRDevice::CreateVRDisplayInfo(
const base::Callback<void(mojom::VRDisplayInfoPtr)>& on_created) {
- vr::EVRInitError init_error;
- auto vr_system =
- vr::VR_Init(&init_error, vr::EVRApplicationType::VRApplication_Scene);
-
- if (init_error != vr::VRInitError_None) {
- LOG(ERROR) << vr::VR_GetVRInitErrorAsEnglishDescription(init_error);
+ if (!vr_system_) {
on_created.Run(nullptr);
return;
}
@@ -94,8 +89,8 @@ void OpenVRDevice::CreateVRDisplayInfo(
mojom::VRDisplayInfoPtr device = mojom::VRDisplayInfo::New();
device->index = id();
device->displayName =
- GetOpenVRString(vr_system, vr::Prop_ManufacturerName_String) + " " +
- GetOpenVRString(vr_system, vr::Prop_ModelNumber_String);
+ GetOpenVRString(vr_system_, vr::Prop_ManufacturerName_String) + " " +
+ GetOpenVRString(vr_system_, vr::Prop_ModelNumber_String);
device->capabilities = mojom::VRDisplayCapabilities::New();
device->capabilities->hasPosition = true;
device->capabilities->hasExternalDisplay = true;
@@ -106,11 +101,11 @@ void OpenVRDevice::CreateVRDisplayInfo(
mojom::VREyeParametersPtr& left_eye = device->leftEye;
mojom::VREyeParametersPtr& right_eye = device->rightEye;
- left_eye->fieldOfView = openVRFovToWebVRFov(vr_system, vr::Eye_Left);
- right_eye->fieldOfView = openVRFovToWebVRFov(vr_system, vr::Eye_Left);
+ left_eye->fieldOfView = openVRFovToWebVRFov(vr_system_, vr::Eye_Left);
+ right_eye->fieldOfView = openVRFovToWebVRFov(vr_system_, vr::Eye_Left);
vr::TrackedPropertyError error = vr::TrackedProp_Success;
- float ipd = vr_system->GetFloatTrackedDeviceProperty(
+ float ipd = vr_system_->GetFloatTrackedDeviceProperty(
vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_UserIpdMeters_Float, &error);
if (error != vr::TrackedProp_Success)
@@ -126,7 +121,7 @@ void OpenVRDevice::CreateVRDisplayInfo(
right_eye->offset[2] = 0.0;
uint32_t width, height;
- vr_system->GetRecommendedRenderTargetSize(&width, &height);
+ vr_system_->GetRecommendedRenderTargetSize(&width, &height);
left_eye->renderWidth = width;
left_eye->renderHeight = height;
right_eye->renderWidth = left_eye->renderWidth;
@@ -134,7 +129,7 @@ void OpenVRDevice::CreateVRDisplayInfo(
device->stageParameters = mojom::VRStageParameters::New();
vr::HmdMatrix34_t mat =
- vr_system->GetSeatedZeroPoseToStandingAbsoluteTrackingPose();
+ vr_system_->GetSeatedZeroPoseToStandingAbsoluteTrackingPose();
device->stageParameters->standingTransform =
HmdMatrix34ToWebVRTransformMatrix(mat);
@@ -147,7 +142,7 @@ void OpenVRDevice::CreateVRDisplayInfo(
device->stageParameters->sizeZ = 0.0f;
}
- render_loop_ = std::make_unique<OpenVRRenderLoop>(vr_system);
+ render_loop_ = std::make_unique<OpenVRRenderLoop>(vr_system_);
on_created.Run(std::move(device));
}
« no previous file with comments | « device/vr/openvr/openvr_device.h ('k') | device/vr/openvr/openvr_device_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698