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

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: Fixed compiler warning treated as an error on Windows 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/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)
34 m_hmd = new HMDVRDevice(this);
35 m_hmd->updateFromWebVRDevice(device);
36 } else if (m_hmd) {
37 m_hmd.clear();
38 }
39
40 if (device.flags & WebVRDeviceTypePosition) {
41 if (!m_positionSensor)
42 m_positionSensor = new PositionSensorVRDevice(this);
43 m_positionSensor->updateFromWebVRDevice(device);
44 } else if (m_positionSensor) {
45 m_positionSensor.clear();
46 }
47 }
48
49 void VRHardwareUnit::addDevicesToVector(HeapVector<Member<VRDevice>>& vrDevices)
50 {
51 if (m_hmd)
52 vrDevices.append(m_hmd);
53
54 if (m_positionSensor)
55 vrDevices.append(m_positionSensor);
56 }
57
58 VRPositionState* VRHardwareUnit::getPositionState()
59 {
60 blink::WebHMDSensorState state;
61 blink::Platform::current()->getHMDSensorState(m_index, state);
62
63 m_positionState->setState(state);
64 m_frameIndex = state.frameIndex;
65
66 return m_positionState;
67 }
68
69 void VRHardwareUnit::setFieldOfView(VREye eye, VRFieldOfView* fov)
70 {
71 switch (eye) {
72 case VREyeLeft:
73 m_currentFOVLeft->setFromVRFieldOfView(*fov);
74 break;
75 case VREyeRight:
76 m_currentFOVRight->setFromVRFieldOfView(*fov);
77 break;
78 default:
79 ASSERT_NOT_REACHED();
80 }
81 }
82
83 VRFieldOfView* VRHardwareUnit::getCurrentEyeFieldOfView(VREye eye) const
84 {
85 switch (eye) {
86 case VREyeLeft:
87 return new VRFieldOfView(*m_currentFOVLeft);
88 case VREyeRight:
89 return new VRFieldOfView(*m_currentFOVRight);
90 default:
91 ASSERT_NOT_REACHED();
92 return nullptr;
93 }
94 }
95
96 void VRHardwareUnit::trace(Visitor* visitor)
97 {
98 visitor->trace(m_positionState);
99 visitor->trace(m_currentFOVLeft);
100 visitor->trace(m_currentFOVRight);
101 visitor->trace(m_hmd);
102 visitor->trace(m_positionSensor);
103 }
104
105 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698