| 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/dom/DOMException.h" | 7 #include "core/dom/DOMException.h" |
| 8 #include "core/inspector/ConsoleMessage.h" | 8 #include "core/inspector/ConsoleMessage.h" |
| 9 #include "modules/vr/NavigatorVR.h" | 9 #include "modules/vr/NavigatorVR.h" |
| 10 #include "modules/vr/VRController.h" | 10 #include "modules/vr/VRController.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 | 22 |
| 23 VREye stringToVREye(const String& whichEye) | 23 VREye stringToVREye(const String& whichEye) |
| 24 { | 24 { |
| 25 if (whichEye == "left") | 25 if (whichEye == "left") |
| 26 return VREyeLeft; | 26 return VREyeLeft; |
| 27 if (whichEye == "right") | 27 if (whichEye == "right") |
| 28 return VREyeRight; | 28 return VREyeRight; |
| 29 return VREyeNone; | 29 return VREyeNone; |
| 30 } | 30 } |
| 31 | 31 |
| 32 } // namepspace | 32 } // namespace |
| 33 | 33 |
| 34 VRDisplay::VRDisplay(NavigatorVR* navigatorVR) | 34 VRDisplay::VRDisplay(NavigatorVR* navigatorVR) |
| 35 : m_navigatorVR(navigatorVR) | 35 : m_navigatorVR(navigatorVR) |
| 36 , m_displayId(0) | 36 , m_displayId(0) |
| 37 , m_isConnected(false) | 37 , m_isConnected(false) |
| 38 , m_isPresenting(false) | 38 , m_isPresenting(false) |
| 39 , m_canUpdateFramePose(true) | 39 , m_canUpdateFramePose(true) |
| 40 , m_capabilities(new VRDisplayCapabilities()) | 40 , m_capabilities(new VRDisplayCapabilities()) |
| 41 , m_eyeParametersLeft(new VREyeParameters()) | 41 , m_eyeParametersLeft(new VREyeParameters()) |
| 42 , m_eyeParametersRight(new VREyeParameters()) | 42 , m_eyeParametersRight(new VREyeParameters()) |
| 43 { | 43 { |
| 44 } | 44 } |
| 45 | 45 |
| 46 VRDisplay::~VRDisplay() | 46 VRDisplay::~VRDisplay() |
| 47 { | 47 { |
| 48 } | 48 } |
| 49 | 49 |
| 50 VRController* VRDisplay::controller() | 50 VRController* VRDisplay::controller() |
| 51 { | 51 { |
| 52 return m_navigatorVR->controller(); | 52 return m_navigatorVR->controller(); |
| 53 } | 53 } |
| 54 | 54 |
| 55 void VRDisplay::update(const mojom::blink::VRDeviceInfoPtr& device) | 55 void VRDisplay::update(const mojom::blink::VRDisplayPtr& display) |
| 56 { | 56 { |
| 57 m_displayId = device->index; | 57 m_displayId = display->index; |
| 58 m_displayName = device->deviceName; | 58 m_displayName = display->displayName; |
| 59 m_isConnected = true; | 59 m_isConnected = true; |
| 60 | 60 |
| 61 // Defaults until the VR service has been update to query these. | 61 m_capabilities->setHasOrientation(display->capabilities->hasOrientation); |
| 62 m_capabilities->setHasOrientation(true); | 62 m_capabilities->setHasPosition(display->capabilities->hasPosition); |
| 63 m_capabilities->setHasPosition(false); | 63 m_capabilities->setHasExternalDisplay(display->capabilities->hasExternalDisp
lay); |
| 64 m_capabilities->setHasExternalDisplay(false); | 64 m_capabilities->setCanPresent(display->capabilities->canPresent); |
| 65 m_capabilities->setCanPresent(false); | 65 m_capabilities->setMaxLayers(display->capabilities->canPresent ? 1 : 0); |
| 66 m_capabilities->setMaxLayers(0); | |
| 67 | 66 |
| 68 if (!device->hmdInfo.is_null()) { | 67 m_eyeParametersLeft->update(display->leftEye); |
| 69 m_eyeParametersLeft->update(device->hmdInfo->leftEye); | 68 m_eyeParametersRight->update(display->rightEye); |
| 70 m_eyeParametersRight->update(device->hmdInfo->rightEye); | 69 |
| 70 if (!display->stageParameters.is_null()) { |
| 71 if (!m_stageParameters) |
| 72 m_stageParameters = new VRStageParameters(); |
| 73 m_stageParameters->update(display->stageParameters); |
| 74 } else { |
| 75 m_stageParameters = nullptr; |
| 71 } | 76 } |
| 72 | |
| 73 m_stageParameters = nullptr; | |
| 74 } | 77 } |
| 75 | 78 |
| 76 VRPose* VRDisplay::getPose() | 79 VRPose* VRDisplay::getPose() |
| 77 { | 80 { |
| 78 if (m_canUpdateFramePose) { | 81 if (m_canUpdateFramePose) { |
| 79 m_framePose = getImmediatePose(); | 82 m_framePose = getImmediatePose(); |
| 80 Platform::current()->currentThread()->addTaskObserver(this); | 83 Platform::current()->currentThread()->addTaskObserver(this); |
| 81 m_canUpdateFramePose = false; | 84 m_canUpdateFramePose = false; |
| 82 } | 85 } |
| 83 | 86 |
| 84 return m_framePose; | 87 return m_framePose; |
| 85 } | 88 } |
| 86 | 89 |
| 87 VRPose* VRDisplay::getImmediatePose() | 90 VRPose* VRDisplay::getImmediatePose() |
| 88 { | 91 { |
| 89 VRPose* pose = VRPose::create(); | 92 VRPose* pose = VRPose::create(); |
| 90 pose->setPose(controller()->getSensorState(m_displayId)); | 93 pose->setPose(controller()->getPose(m_displayId)); |
| 91 return pose; | 94 return pose; |
| 92 } | 95 } |
| 93 | 96 |
| 94 void VRDisplay::resetPose() | 97 void VRDisplay::resetPose() |
| 95 { | 98 { |
| 96 controller()->resetSensor(m_displayId); | 99 controller()->resetPose(m_displayId); |
| 97 } | 100 } |
| 98 | 101 |
| 99 VREyeParameters* VRDisplay::getEyeParameters(const String& whichEye) | 102 VREyeParameters* VRDisplay::getEyeParameters(const String& whichEye) |
| 100 { | 103 { |
| 101 switch (stringToVREye(whichEye)) { | 104 switch (stringToVREye(whichEye)) { |
| 102 case VREyeLeft: | 105 case VREyeLeft: |
| 103 return m_eyeParametersLeft; | 106 return m_eyeParametersLeft; |
| 104 case VREyeRight: | 107 case VREyeRight: |
| 105 return m_eyeParametersRight; | 108 return m_eyeParametersRight; |
| 106 default: | 109 default: |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 { | 190 { |
| 188 visitor->trace(m_navigatorVR); | 191 visitor->trace(m_navigatorVR); |
| 189 visitor->trace(m_capabilities); | 192 visitor->trace(m_capabilities); |
| 190 visitor->trace(m_stageParameters); | 193 visitor->trace(m_stageParameters); |
| 191 visitor->trace(m_eyeParametersLeft); | 194 visitor->trace(m_eyeParametersLeft); |
| 192 visitor->trace(m_eyeParametersRight); | 195 visitor->trace(m_eyeParametersRight); |
| 193 visitor->trace(m_framePose); | 196 visitor->trace(m_framePose); |
| 194 } | 197 } |
| 195 | 198 |
| 196 } // namespace blink | 199 } // namespace blink |
| OLD | NEW |