mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Add rough support for floor-level space
This commit is contained in:
parent
e5b802ecce
commit
91378cc859
1 changed files with 14 additions and 8 deletions
|
@ -12,7 +12,7 @@ use crate::dom::xrrigidtransform::XRRigidTransform;
|
||||||
use crate::dom::xrsession::XRSession;
|
use crate::dom::xrsession::XRSession;
|
||||||
use crate::dom::xrspace::XRSpace;
|
use crate::dom::xrspace::XRSpace;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use euclid::RigidTransform3D;
|
use euclid::{RigidTransform3D, Vector3D};
|
||||||
use webvr_traits::WebVRFrameData;
|
use webvr_traits::WebVRFrameData;
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
|
@ -62,8 +62,11 @@ impl XRStationaryReferenceSpace {
|
||||||
viewer_pose
|
viewer_pose
|
||||||
}
|
}
|
||||||
XRStationaryReferenceSpaceSubtype::Floor_level => {
|
XRStationaryReferenceSpaceSubtype::Floor_level => {
|
||||||
// XXXManishearth support floor-level
|
// XXXManishearth support getting floor info from stage parameters
|
||||||
viewer_pose
|
|
||||||
|
// assume approximate user height of 2 meters
|
||||||
|
let floor_to_eye: RigidTransform3D<f64> = Vector3D::new(0., 2., 0.).into();
|
||||||
|
floor_to_eye.pre_mul(&viewer_pose)
|
||||||
}
|
}
|
||||||
XRStationaryReferenceSpaceSubtype::Position_disabled => {
|
XRStationaryReferenceSpaceSubtype::Position_disabled => {
|
||||||
// This space follows the user around, but does not mirror the user's orientation
|
// This space follows the user around, but does not mirror the user's orientation
|
||||||
|
@ -84,16 +87,19 @@ impl XRStationaryReferenceSpace {
|
||||||
// The eye-level pose is basically whatever the headset pose was at t=0, which
|
// The eye-level pose is basically whatever the headset pose was at t=0, which
|
||||||
// for most devices is (0, 0, 0)
|
// for most devices is (0, 0, 0)
|
||||||
RigidTransform3D::identity()
|
RigidTransform3D::identity()
|
||||||
}
|
},
|
||||||
XRStationaryReferenceSpaceSubtype::Floor_level => {
|
XRStationaryReferenceSpaceSubtype::Floor_level => {
|
||||||
// XXXManishearth support floor-level
|
// XXXManishearth support getting floor info from stage parameters
|
||||||
RigidTransform3D::identity()
|
|
||||||
}
|
// Assume approximate height of 2m
|
||||||
|
// the floor-level space is 2m below the eye-level space, which is (0, 0, 0)
|
||||||
|
Vector3D::new(0., -2., 0.).into()
|
||||||
|
},
|
||||||
XRStationaryReferenceSpaceSubtype::Position_disabled => {
|
XRStationaryReferenceSpaceSubtype::Position_disabled => {
|
||||||
// This space follows the user around, but does not mirror the user's orientation
|
// This space follows the user around, but does not mirror the user's orientation
|
||||||
let viewer_pose = XRSpace::viewer_pose_from_frame_data(viewer_pose);
|
let viewer_pose = XRSpace::viewer_pose_from_frame_data(viewer_pose);
|
||||||
viewer_pose.translation.into()
|
viewer_pose.translation.into()
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue