aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xrspace.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2020-04-10 15:30:13 -0700
committerManish Goregaokar <manishsmail@gmail.com>2020-04-19 20:29:14 -0700
commit1b07b7732327852240c6c0b130f3923f3067193f (patch)
treef308401bc65299cebc134c59570f685f496e04df /components/script/dom/xrspace.rs
parentf1d6a89150dbfddef5eed6c7d9085f5eec25b532 (diff)
downloadservo-1b07b7732327852240c6c0b130f3923f3067193f.tar.gz
servo-1b07b7732327852240c6c0b130f3923f3067193f.zip
Add XRSession::requestHitTestSource()
Diffstat (limited to 'components/script/dom/xrspace.rs')
-rw-r--r--components/script/dom/xrspace.rs21
1 files changed, 20 insertions, 1 deletions
diff --git a/components/script/dom/xrspace.rs b/components/script/dom/xrspace.rs
index 80752be3e35..b4a26b7b8bb 100644
--- a/components/script/dom/xrspace.rs
+++ b/components/script/dom/xrspace.rs
@@ -11,7 +11,8 @@ use crate::dom::xrinputsource::XRInputSource;
use crate::dom::xrreferencespace::XRReferenceSpace;
use crate::dom::xrsession::{cast_transform, ApiPose, XRSession};
use dom_struct::dom_struct;
-use webxr_api::Frame;
+use euclid::RigidTransform3D;
+use webxr_api::{BaseSpace, Frame, Space};
#[dom_struct]
pub struct XRSpace {
@@ -56,6 +57,24 @@ impl XRSpace {
global,
)
}
+
+ pub fn space(&self) -> Space {
+ if let Some(rs) = self.downcast::<XRReferenceSpace>() {
+ rs.space()
+ } else if let Some(source) = self.input_source.get() {
+ let base = if self.is_grip_space {
+ BaseSpace::Grip(source.id())
+ } else {
+ BaseSpace::TargetRay(source.id())
+ };
+ Space {
+ base,
+ offset: RigidTransform3D::identity(),
+ }
+ } else {
+ panic!("invalid space found")
+ }
+ }
}
impl XRSpace {