From ffacb1179eb7b62b805584b72d11d1b429523b22 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Thu, 14 Mar 2019 13:40:39 -0700 Subject: Add originOffset to XRReferenceSpace --- components/script/dom/xrreferencespace.rs | 32 ++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'components/script/dom/xrreferencespace.rs') 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, } 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 { + pub fn new( + global: &Window, + position: &DOMPointReadOnly, + orientation: &DOMPointReadOnly, + ) -> DomRoot { + 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 { + self.transform.get() + } +} -- cgit v1.2.3