diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-03-27 00:05:03 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-27 00:05:03 -0400 |
commit | 3c27dc993d3f1ffe61b09de32ce6f8fdfeb1df39 (patch) | |
tree | 78f3e26e10c364d6cfd8ca9c26e49c0bb769fea3 /components/script/dom/xrframe.rs | |
parent | 2684499d2fc359ce609318bec24503306a151219 (diff) | |
parent | 2e628055786cd5d1d17cf739aea689f16e7a0d27 (diff) | |
download | servo-3c27dc993d3f1ffe61b09de32ce6f8fdfeb1df39.tar.gz servo-3c27dc993d3f1ffe61b09de32ce6f8fdfeb1df39.zip |
Auto merge of #23097 - Manishearth:transforms, r=asajeffrey
Properly support transforms in WebXR
Still need to test this
There are also a bunch of fixmes that I should get to in this PR.
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23097)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/xrframe.rs')
-rw-r--r-- | components/script/dom/xrframe.rs | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/components/script/dom/xrframe.rs b/components/script/dom/xrframe.rs index b569f7d9e46..37017da9a5a 100644 --- a/components/script/dom/xrframe.rs +++ b/components/script/dom/xrframe.rs @@ -5,13 +5,11 @@ use crate::dom::bindings::codegen::Bindings::XRFrameBinding; use crate::dom::bindings::codegen::Bindings::XRFrameBinding::XRFrameMethods; use crate::dom::bindings::codegen::Bindings::XRViewBinding::XREye; -use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; use crate::dom::xrreferencespace::XRReferenceSpace; use crate::dom::xrsession::XRSession; -use crate::dom::xrstationaryreferencespace::XRStationaryReferenceSpace; use crate::dom::xrview::XRView; use crate::dom::xrviewerpose::XRViewerPose; use dom_struct::dom_struct; @@ -55,16 +53,21 @@ impl XRFrameMethods for XRFrame { /// https://immersive-web.github.io/webxr/#dom-xrframe-getviewerpose fn GetViewerPose(&self, reference: &XRReferenceSpace) -> Option<DomRoot<XRViewerPose>> { - if let Some(_) = reference.downcast::<XRStationaryReferenceSpace>() { - // For 3DOF devices all three kinds of reference spaces are identical - // FIXME(#23070, Manishearth) support originOffset - let left = XRView::new(&self.global(), &self.session, XREye::Left, &self.data); - let right = XRView::new(&self.global(), &self.session, XREye::Right, &self.data); - Some(XRViewerPose::new(&self.global(), &left, &right)) - } else { - // FIXME(#23070, Manishearth) support identity reference spaces - // depends on https://github.com/immersive-web/webxr/issues/565 - None - } + let pose = reference.get_viewer_pose(&self.data); + let left = XRView::new( + &self.global(), + &self.session, + XREye::Left, + &pose, + &self.data, + ); + let right = XRView::new( + &self.global(), + &self.session, + XREye::Right, + &pose, + &self.data, + ); + Some(XRViewerPose::new(&self.global(), &left, &right)) } } |