OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "modules/vr/VRDisplay.h" | 5 #include "modules/vr/VRDisplay.h" |
6 | 6 |
7 #include "core/css/StylePropertySet.h" | 7 #include "core/css/StylePropertySet.h" |
8 #include "core/dom/DOMException.h" | 8 #include "core/dom/DOMException.h" |
9 #include "core/dom/FrameRequestCallback.h" | 9 #include "core/dom/FrameRequestCallback.h" |
10 #include "core/dom/ScriptedAnimationController.h" | 10 #include "core/dom/ScriptedAnimationController.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 | 67 |
68 VRController* VRDisplay::controller() { | 68 VRController* VRDisplay::controller() { |
69 return m_navigatorVR->controller(); | 69 return m_navigatorVR->controller(); |
70 } | 70 } |
71 | 71 |
72 void VRDisplay::update(const device::mojom::blink::VRDisplayInfoPtr& display) { | 72 void VRDisplay::update(const device::mojom::blink::VRDisplayInfoPtr& display) { |
73 m_displayId = display->index; | 73 m_displayId = display->index; |
74 m_displayName = display->displayName; | 74 m_displayName = display->displayName; |
75 m_isConnected = true; | 75 m_isConnected = true; |
76 | 76 |
77 m_capabilities->setHasOrientation(display->capabilities->hasOrientation); | |
78 m_capabilities->setHasPosition(display->capabilities->hasPosition); | 77 m_capabilities->setHasPosition(display->capabilities->hasPosition); |
79 m_capabilities->setHasExternalDisplay( | 78 m_capabilities->setHasExternalDisplay( |
80 display->capabilities->hasExternalDisplay); | 79 display->capabilities->hasExternalDisplay); |
81 m_capabilities->setCanPresent(display->capabilities->canPresent); | 80 m_capabilities->setCanPresent(display->capabilities->canPresent); |
82 m_capabilities->setMaxLayers(display->capabilities->canPresent ? 1 : 0); | 81 m_capabilities->setMaxLayers(display->capabilities->canPresent ? 1 : 0); |
83 | 82 |
84 // Ignore non presenting delegate | 83 // Ignore non presenting delegate |
85 bool isValid = display->leftEye->renderWidth > 0; | 84 bool isValid = display->leftEye->renderWidth > 0; |
86 bool needOnPresentChange = false; | 85 bool needOnPresentChange = false; |
87 if (m_isPresenting && isValid && !m_isValidDeviceForPresenting) { | 86 if (m_isPresenting && isValid && !m_isValidDeviceForPresenting) { |
88 needOnPresentChange = true; | 87 needOnPresentChange = true; |
89 } | 88 } |
90 m_isValidDeviceForPresenting = isValid; | 89 m_isValidDeviceForPresenting = isValid; |
91 m_eyeParametersLeft->update(display->leftEye); | 90 m_eyeParametersLeft->update(display->leftEye); |
92 m_eyeParametersRight->update(display->rightEye); | 91 m_eyeParametersRight->update(display->rightEye); |
93 | 92 |
94 if (!display->stageParameters.is_null()) { | 93 if (!display->stageParameters.is_null()) { |
95 if (!m_stageParameters) | 94 if (!m_stageParameters) |
96 m_stageParameters = new VRStageParameters(); | 95 m_stageParameters = new VRStageParameters(); |
97 m_stageParameters->update(display->stageParameters); | 96 m_stageParameters->update(display->stageParameters); |
98 } else { | 97 } else { |
99 m_stageParameters = nullptr; | 98 m_stageParameters = nullptr; |
100 } | 99 } |
101 | 100 |
102 if (needOnPresentChange) { | 101 if (needOnPresentChange) { |
103 OnPresentChange(); | 102 OnPresentChange(); |
104 } | 103 } |
105 } | 104 } |
106 | 105 |
107 void VRDisplay::disconnected() { | |
108 if (m_isConnected) | |
109 m_isConnected = !m_isConnected; | |
110 } | |
111 | |
112 bool VRDisplay::getFrameData(VRFrameData* frameData) { | 106 bool VRDisplay::getFrameData(VRFrameData* frameData) { |
113 if (!m_navigatorVR->isFocused() || !m_framePose || m_displayBlurred) | 107 if (!m_navigatorVR->isFocused() || !m_framePose || m_displayBlurred) |
114 return false; | 108 return false; |
115 | 109 |
116 if (!frameData) | 110 if (!frameData) |
117 return false; | 111 return false; |
118 | 112 |
119 if (m_depthNear == m_depthFar) | 113 if (m_depthNear == m_depthFar) |
120 return false; | 114 return false; |
121 | 115 |
122 return frameData->update(m_framePose, m_eyeParametersLeft, | 116 return frameData->update(m_framePose, m_eyeParametersLeft, |
123 m_eyeParametersRight, m_depthNear, m_depthFar); | 117 m_eyeParametersRight, m_depthNear, m_depthFar); |
124 } | 118 } |
125 | 119 |
126 VRPose* VRDisplay::getPose() { | |
127 if (!m_navigatorVR->isFocused() || !m_framePose || m_displayBlurred) | |
128 return nullptr; | |
129 | |
130 VRPose* pose = VRPose::create(); | |
131 pose->setPose(m_framePose); | |
132 return pose; | |
133 } | |
134 | |
135 void VRDisplay::resetPose() { | |
136 if (!m_display) | |
137 return; | |
138 | |
139 m_display->ResetPose(); | |
140 } | |
141 | |
142 VREyeParameters* VRDisplay::getEyeParameters(const String& whichEye) { | 120 VREyeParameters* VRDisplay::getEyeParameters(const String& whichEye) { |
143 switch (stringToVREye(whichEye)) { | 121 switch (stringToVREye(whichEye)) { |
144 case VREyeLeft: | 122 case VREyeLeft: |
145 return m_eyeParametersLeft; | 123 return m_eyeParametersLeft; |
146 case VREyeRight: | 124 case VREyeRight: |
147 return m_eyeParametersRight; | 125 return m_eyeParametersRight; |
148 default: | 126 default: |
149 return nullptr; | 127 return nullptr; |
150 } | 128 } |
151 } | 129 } |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 visitor->trace(m_stageParameters); | 789 visitor->trace(m_stageParameters); |
812 visitor->trace(m_eyeParametersLeft); | 790 visitor->trace(m_eyeParametersLeft); |
813 visitor->trace(m_eyeParametersRight); | 791 visitor->trace(m_eyeParametersRight); |
814 visitor->trace(m_layer); | 792 visitor->trace(m_layer); |
815 visitor->trace(m_renderingContext); | 793 visitor->trace(m_renderingContext); |
816 visitor->trace(m_scriptedAnimationController); | 794 visitor->trace(m_scriptedAnimationController); |
817 visitor->trace(m_pendingPresentResolvers); | 795 visitor->trace(m_pendingPresentResolvers); |
818 } | 796 } |
819 | 797 |
820 } // namespace blink | 798 } // namespace blink |
OLD | NEW |