mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Add XRSession.viewerSpace
This commit is contained in:
parent
7e4b6512a7
commit
813613628d
3 changed files with 21 additions and 3 deletions
|
@ -18,6 +18,7 @@ use webvr_traits::WebVRFrameData;
|
|||
pub struct XRSpace {
|
||||
eventtarget: EventTarget,
|
||||
session: Dom<XRSession>,
|
||||
is_viewerspace: bool,
|
||||
}
|
||||
|
||||
impl XRSpace {
|
||||
|
@ -25,13 +26,21 @@ impl XRSpace {
|
|||
XRSpace {
|
||||
eventtarget: EventTarget::new_inherited(),
|
||||
session: Dom::from_ref(session),
|
||||
is_viewerspace: false,
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
pub fn new(global: &GlobalScope, session: &XRSession) -> DomRoot<XRSpace> {
|
||||
fn new_viewerspace_inner(session: &XRSession) -> XRSpace {
|
||||
XRSpace {
|
||||
eventtarget: EventTarget::new_inherited(),
|
||||
session: Dom::from_ref(session),
|
||||
is_viewerspace: true,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new_viewerspace(global: &GlobalScope, session: &XRSession) -> DomRoot<XRSpace> {
|
||||
reflect_dom_object(
|
||||
Box::new(XRSpace::new_inherited(session)),
|
||||
Box::new(XRSpace::new_viewerspace_inner(session)),
|
||||
global,
|
||||
XRSpaceBinding::Wrap,
|
||||
)
|
||||
|
@ -47,6 +56,8 @@ impl XRSpace {
|
|||
pub fn get_pose(&self, base_pose: &WebVRFrameData) -> RigidTransform3D<f64> {
|
||||
if let Some(reference) = self.downcast::<XRReferenceSpace>() {
|
||||
reference.get_pose(base_pose)
|
||||
} else if self.is_viewerspace {
|
||||
XRSpace::viewer_pose_from_frame_data(base_pose)
|
||||
} else {
|
||||
unreachable!()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue