diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2019-03-14 13:40:39 -0700 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2019-03-18 16:26:48 -0700 |
commit | ffacb1179eb7b62b805584b72d11d1b429523b22 (patch) | |
tree | a69f925e15483cc80ca298fe3b0924457433a4eb /components/script/dom/xrreferencespace.rs | |
parent | 503ea3d943e37cc0ca1b86882550a6515651f927 (diff) | |
download | servo-ffacb1179eb7b62b805584b72d11d1b429523b22.tar.gz servo-ffacb1179eb7b62b805584b72d11d1b429523b22.zip |
Add originOffset to XRReferenceSpace
Diffstat (limited to 'components/script/dom/xrreferencespace.rs')
-rw-r--r-- | components/script/dom/xrreferencespace.rs | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/components/script/dom/xrreferencespace.rs b/components/script/dom/xrreferencespace.rs index 308b710d928..7d573a165c3 100644 --- a/components/script/dom/xrreferencespace.rs +++ b/components/script/dom/xrreferencespace.rs @@ -3,30 +3,52 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::dom::bindings::codegen::Bindings::XRReferenceSpaceBinding; +use crate::dom::bindings::codegen::Bindings::XRReferenceSpaceBinding::XRReferenceSpaceMethods; use crate::dom::bindings::reflector::reflect_dom_object; -use crate::dom::bindings::root::DomRoot; -use crate::dom::globalscope::GlobalScope; +use crate::dom::bindings::root::{DomRoot, MutDom}; +use crate::dom::dompointreadonly::DOMPointReadOnly; +use crate::dom::window::Window; +use crate::dom::xrrigidtransform::XRRigidTransform; use crate::dom::xrspace::XRSpace; use dom_struct::dom_struct; #[dom_struct] pub struct XRReferenceSpace { xrspace: XRSpace, + transform: MutDom<XRRigidTransform>, } impl XRReferenceSpace { - pub fn new_inherited() -> XRReferenceSpace { + pub fn new_inherited(transform: &XRRigidTransform) -> XRReferenceSpace { XRReferenceSpace { xrspace: XRSpace::new_inherited(), + transform: MutDom::new(transform), } } #[allow(unused)] - pub fn new(global: &GlobalScope) -> DomRoot<XRReferenceSpace> { + pub fn new( + global: &Window, + position: &DOMPointReadOnly, + orientation: &DOMPointReadOnly, + ) -> DomRoot<XRReferenceSpace> { + let transform = XRRigidTransform::identity(global); reflect_dom_object( - Box::new(XRReferenceSpace::new_inherited()), + Box::new(XRReferenceSpace::new_inherited(&transform)), global, XRReferenceSpaceBinding::Wrap, ) } } + +impl XRReferenceSpaceMethods for XRReferenceSpace { + /// https://immersive-web.github.io/webxr/#dom-xrreferencespace-originoffset + fn SetOriginOffset(&self, transform: &XRRigidTransform) { + self.transform.set(transform); + } + + /// https://immersive-web.github.io/webxr/#dom-xrreferencespace-originoffset + fn OriginOffset(&self) -> DomRoot<XRRigidTransform> { + self.transform.get() + } +} |