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

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

Issue 848053002: Adding WebVR interface to Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Addressed feedback from philipj@opera.com, rebased Created 5 years, 10 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 2014 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/VRHardwareUnit.h"
7
8 #include "modules/vr/HMDVRDevice.h"
9 #include "modules/vr/PositionSensorVRDevice.h"
10 #include "modules/vr/VRDevice.h"
11 #include "public/platform/Platform.h"
12
13 namespace blink {
14
15 VRHardwareUnit::VRHardwareUnit()
16 : m_frameIndex(0)
17 {
18 m_positionState = VRPositionState::create();
19 m_currentFOVLeft = new VRFieldOfView();
20 m_currentFOVRight = new VRFieldOfView();
21 }
22
23 VRHardwareUnit::~VRHardwareUnit()
24 {
25 }
26
27 void VRHardwareUnit::updateFromWebVRDevice(const WebVRDevice& device)
28 {
29 m_index = device.index;
30 m_hardwareUnitId = device.deviceId;
31
32 if (device.flags & WebVRDeviceTypeHMD) {
33 if (!m_hmd.get())
sof 2015/02/24 12:35:29 get() is redundant (here and for other Member<> bo
34 m_hmd = new HMDVRDevice(this);
35 m_hmd->updateFromWebVRDevice(device);
36 } else if (m_hmd.get()) {
37 m_hmd.clear();
38 }
39
40 if (device.flags & WebVRDeviceTypePosition) {
41 if (!m_positionSensor.get())
42 m_positionSensor = new PositionSensorVRDevice(this);
43 m_positionSensor->updateFromWebVRDevice(device);
44 } else if (m_positionSensor.get()) {
45 m_positionSensor.clear();
46 }
47 }
48
49 void VRHardwareUnit::addDevicesToVector(HeapVector<Member<VRDevice>>& vrDevices)
Ken Russell (switch to Gerrit) 2015/02/23 19:39:32 Please make sure to get a review from someone who
50 {
51 if (m_hmd.get())
52 vrDevices.append(m_hmd);
53
54 if (m_positionSensor.get())
55 vrDevices.append(m_positionSensor);
56 }
57
58 VRPositionState* VRHardwareUnit::getPositionState(double timeOffset)
59 {
60 blink::WebHMDSensorState state;
61 blink::Platform::current()->getHMDSensorState(m_index, timeOffset, state);
62
63 m_positionState->setState(state);
64 m_frameIndex = state.frameIndex;
65
66 return m_positionState;
67 }
68
69 void VRHardwareUnit::setFieldOfView(unsigned eyeIndex, VRFieldOfView* fov)
70 {
71 switch (eyeIndex) {
72 case 0:
73 m_currentFOVLeft->setFromVRFieldOfView(*fov);
74 break;
75 case 1:
76 m_currentFOVRight->setFromVRFieldOfView(*fov);
77 break;
78 }
sof 2015/02/24 12:35:29 Appropriate to have a default: case here?
79 }
80
81 VRFieldOfView* VRHardwareUnit::getCurrentEyeFieldOfView(unsigned eyeIndex) const
82 {
83 switch (eyeIndex) {
84 case 0:
85 return new VRFieldOfView(*m_currentFOVLeft);
86 case 1:
87 return new VRFieldOfView(*m_currentFOVRight);
88 default:
89 return 0;
90 }
91 }
92
93 WebVRFieldOfView VRHardwareUnit::getFieldOfView(unsigned eyeIndex) const
94 {
95 VRFieldOfView* srcFov = eyeIndex == 0 ? m_currentFOVLeft : m_currentFOVRight ;
96
97 blink::WebVRFieldOfView fov;
98 fov.upDegrees = srcFov->upDegrees();
99 fov.downDegrees = srcFov->downDegrees();
100 fov.leftDegrees = srcFov->leftDegrees();
101 fov.rightDegrees = srcFov->rightDegrees();
102 return fov;
103 }
104
105 void VRHardwareUnit::trace(Visitor* visitor)
106 {
107 visitor->trace(m_positionState);
108 visitor->trace(m_currentFOVLeft);
109 visitor->trace(m_currentFOVRight);
110 visitor->trace(m_hmd);
111 visitor->trace(m_positionSensor);
112 }
113
114 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698