diff options
Diffstat (limited to 'components/script/dom/xrreferencespace.rs')
-rw-r--r-- | components/script/dom/xrreferencespace.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/components/script/dom/xrreferencespace.rs b/components/script/dom/xrreferencespace.rs index e7bf33cddd9..402d9d584e8 100644 --- a/components/script/dom/xrreferencespace.rs +++ b/components/script/dom/xrreferencespace.rs @@ -3,8 +3,8 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use dom_struct::dom_struct; -use euclid::RigidTransform3D; -use webxr_api::{self, Frame, Space}; +use euclid::{Box2D, RigidTransform3D}; +use webxr_api::{self, Floor, Frame, Space}; use crate::dom::bindings::codegen::Bindings::XRReferenceSpaceBinding::{ XRReferenceSpaceMethods, XRReferenceSpaceType, @@ -65,6 +65,7 @@ impl XRReferenceSpace { XRReferenceSpaceType::Local => webxr_api::BaseSpace::Local, XRReferenceSpaceType::Viewer => webxr_api::BaseSpace::Viewer, XRReferenceSpaceType::Local_floor => webxr_api::BaseSpace::Floor, + XRReferenceSpaceType::Bounded_floor => webxr_api::BaseSpace::BoundedFloor, _ => panic!("unsupported reference space found"), }; let offset = self.offset.transform(); @@ -121,7 +122,7 @@ impl XRReferenceSpace { // for most devices is (0, 0, 0) Some(RigidTransform3D::identity()) }, - XRReferenceSpaceType::Local_floor => { + XRReferenceSpaceType::Local_floor | XRReferenceSpaceType::Bounded_floor => { let native_to_floor = self .upcast::<XRSpace>() .session() @@ -134,4 +135,10 @@ impl XRReferenceSpace { _ => unimplemented!(), } } + + pub fn get_bounds(&self) -> Option<Box2D<f32, Floor>> { + self.upcast::<XRSpace>() + .session() + .with_session(|s| s.reference_space_bounds()) + } } |