diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2020-04-10 15:30:13 -0700 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2020-04-19 20:29:14 -0700 |
commit | 1b07b7732327852240c6c0b130f3923f3067193f (patch) | |
tree | f308401bc65299cebc134c59570f685f496e04df /components/script/dom/xrspace.rs | |
parent | f1d6a89150dbfddef5eed6c7d9085f5eec25b532 (diff) | |
download | servo-1b07b7732327852240c6c0b130f3923f3067193f.tar.gz servo-1b07b7732327852240c6c0b130f3923f3067193f.zip |
Add XRSession::requestHitTestSource()
Diffstat (limited to 'components/script/dom/xrspace.rs')
-rw-r--r-- | components/script/dom/xrspace.rs | 21 |
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 { |