aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xrreferencespace.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2019-03-14 13:40:39 -0700
committerManish Goregaokar <manishsmail@gmail.com>2019-03-18 16:26:48 -0700
commitffacb1179eb7b62b805584b72d11d1b429523b22 (patch)
treea69f925e15483cc80ca298fe3b0924457433a4eb /components/script/dom/xrreferencespace.rs
parent503ea3d943e37cc0ca1b86882550a6515651f927 (diff)
downloadservo-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.rs32
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()
+ }
+}