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

Side by Side Diff: Source/modules/vr/HMDVRDevice.cpp

Issue 848053002: Adding WebVR interface to Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Updated interface to match public spec Created 5 years, 9 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "modules/vr/HMDVRDevice.h"
7
8 #include "modules/vr/VRFieldOfView.h"
9 #include "public/platform/Platform.h"
10 #include "public/platform/WebSize.h"
11
12 namespace blink {
13
14 HMDVRDevice::HMDVRDevice(VRHardwareUnit* hardwareUnit)
15 : VRDevice(hardwareUnit)
16 , m_dirtyFov(true)
17 {
18 m_eyeParametersLeft = VREyeParameters::create();
19 m_eyeParametersRight = VREyeParameters::create();
20 }
21
22 VREye HMDVRDevice::StringToVREye(const String& whichEye)
23 {
24 if (whichEye == "left")
25 return VREyeLeft;
26 if (whichEye == "right")
27 return VREyeRight;
28 return VREyeNone;
29 }
30
31 void HMDVRDevice::updateFromWebVRDevice(const WebVRDevice& device)
32 {
33 VRDevice::updateFromWebVRDevice(device);
34 const blink::WebVRHMDInfo &hmdInfo = device.hmdInfo;
35
36 m_eyeParametersLeft->setFromWebVREyeParameters(hmdInfo.leftEye);
37 m_eyeParametersRight->setFromWebVREyeParameters(hmdInfo.rightEye);
38 }
39
40 VREyeParameters* HMDVRDevice::getEyeParameters(const String& whichEye)
41 {
42 // If we have updated the field of view since the last call recompute the re nder rects.
43 if (m_dirtyFov) {
44 blink::WebVRVector4 leftRect, rightRect;
45 blink::Platform::current()->getVRRenderTargetRects(index(),
46 m_eyeParametersLeft->currentFieldOfView()->toWebVRFieldOfView(),
47 m_eyeParametersRight->currentFieldOfView()->toWebVRFieldOfView(),
48 &leftRect,
49 &rightRect);
50
51 m_eyeParametersLeft->setRenderRect(leftRect.x, leftRect.y, leftRect.z, l eftRect.w);
52 m_eyeParametersRight->setRenderRect(rightRect.x, rightRect.y, rightRect. z, rightRect.w);
53
54 m_dirtyFov = false;
55 }
56
57 switch (StringToVREye(whichEye)) {
58 case VREyeLeft:
59 return m_eyeParametersLeft;
60 case VREyeRight:
61 return m_eyeParametersRight;
62 default:
Mike West 2015/03/17 05:25:26 Nit: Here and elsewhere (like VRHardwareUnit::getF
63 return nullptr;
64 }
65 }
66
67 void HMDVRDevice::setFieldOfView(VRFieldOfView* leftFov, VRFieldOfView* rightFov )
68 {
69 m_dirtyFov = true;
70
71 // FIXME: Clamp to maxFOV
72 if (leftFov) {
73 hardwareUnit()->setFieldOfView(VREyeLeft, leftFov);
74 m_eyeParametersLeft->setCurrentFieldOfView(leftFov);
75 } else {
76 hardwareUnit()->setFieldOfView(VREyeLeft, m_eyeParametersLeft->recommend edFieldOfView());
77 m_eyeParametersLeft->setCurrentFieldOfView(m_eyeParametersLeft->recommen dedFieldOfView());
78 }
79
80 if (rightFov) {
81 hardwareUnit()->setFieldOfView(VREyeRight, rightFov);
82 m_eyeParametersLeft->setCurrentFieldOfView(rightFov);
83 } else {
84 hardwareUnit()->setFieldOfView(VREyeRight, m_eyeParametersRight->recomme ndedFieldOfView());
85 m_eyeParametersRight->setCurrentFieldOfView(m_eyeParametersRight->recomm endedFieldOfView());
86 }
87 }
88
89 void HMDVRDevice::trace(Visitor* visitor)
90 {
91 visitor->trace(m_eyeParametersLeft);
92 visitor->trace(m_eyeParametersRight);
93
94 VRDevice::trace(visitor);
95 }
96
97 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698