Add originOffset to XRReferenceSpace

This commit is contained in:
Manish Goregaokar 2019-03-14 13:40:39 -07:00
parent 503ea3d943
commit ffacb1179e
4 changed files with 48 additions and 12 deletions

View file

@ -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()
}
}