Add stub XRRay

This commit is contained in:
Manish Goregaokar 2020-04-08 14:29:55 -07:00
parent 7f353033f4
commit b6a9e41bb8
4 changed files with 52 additions and 0 deletions

View file

@ -158,6 +158,7 @@ use webgpu::{
};
use webrender_api::{DocumentId, ImageKey};
use webxr_api::SwapChainId as WebXRSwapChainId;
use webxr_api::Ray;
unsafe_no_jsmanaged_fields!(Tm);
@ -750,6 +751,13 @@ unsafe impl<U> JSTraceable for euclid::Rect<i32, U> {
}
}
unsafe impl<Space> JSTraceable for Ray<Space> {
#[inline]
unsafe fn trace(&self, _trc: *mut JSTracer) {
// Do nothing
}
}
unsafe impl JSTraceable for StyleLocked<FontFaceRule> {
unsafe fn trace(&self, _trc: *mut JSTracer) {
// Do nothing.

View file

@ -579,6 +579,7 @@ pub mod xrinputsourceschangeevent;
pub mod xrlayer;
pub mod xrmediabinding;
pub mod xrpose;
pub mod xrray;
pub mod xrreferencespace;
pub mod xrrenderstate;
pub mod xrrigidtransform;

View file

@ -0,0 +1,14 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://immersive-web.github.io/hit-test/#xrray-interface
[SecureContext, Exposed=Window, Pref="dom.webxr.enabled"]
interface XRRay {
// constructor(optional DOMPointInit origin, optional DOMPointInit direction);
// constructor(XRRigidTransform transform);
// [SameObject] readonly attribute DOMPointReadOnly origin;
// [SameObject] readonly attribute DOMPointReadOnly direction;
// [SameObject] readonly attribute Float32Array matrix;
};

View file

@ -0,0 +1,29 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
use crate::dom::bindings::root::DomRoot;
use crate::dom::globalscope::GlobalScope;
use dom_struct::dom_struct;
use webxr_api::{ApiSpace, Ray};
#[dom_struct]
pub struct XRRay {
reflector_: Reflector,
#[ignore_malloc_size_of = "defined in webxr"]
ray: Ray<ApiSpace>,
}
impl XRRay {
fn new_inherited(ray: Ray<ApiSpace>) -> XRRay {
XRRay {
reflector_: Reflector::new(),
ray,
}
}
pub fn new(global: &GlobalScope, ray: Ray<ApiSpace>) -> DomRoot<XRRay> {
reflect_dom_object(Box::new(XRRay::new_inherited(ray)), global)
}
}