script/dom/webxr/
xrpose.rs1use dom_struct::dom_struct;
6
7use crate::dom::bindings::codegen::Bindings::XRPoseBinding::XRPoseMethods;
8use crate::dom::bindings::reflector::{Reflector, reflect_dom_object};
9use crate::dom::bindings::root::{Dom, DomRoot};
10use crate::dom::dompointreadonly::DOMPointReadOnly;
11use crate::dom::window::Window;
12use crate::dom::xrrigidtransform::XRRigidTransform;
13use crate::dom::xrsession::ApiRigidTransform;
14use crate::script_runtime::CanGc;
15
16#[dom_struct]
17pub(crate) struct XRPose {
18 reflector_: Reflector,
19 transform: Dom<XRRigidTransform>,
20}
21
22impl XRPose {
23 pub(crate) fn new_inherited(transform: &XRRigidTransform) -> XRPose {
24 XRPose {
25 reflector_: Reflector::new(),
26 transform: Dom::from_ref(transform),
27 }
28 }
29
30 pub(crate) fn new(
31 window: &Window,
32 transform: ApiRigidTransform,
33 can_gc: CanGc,
34 ) -> DomRoot<XRPose> {
35 let transform = XRRigidTransform::new(window, transform, can_gc);
36 reflect_dom_object(Box::new(XRPose::new_inherited(&transform)), window, can_gc)
37 }
38}
39
40impl XRPoseMethods<crate::DomTypeHolder> for XRPose {
41 fn Transform(&self) -> DomRoot<XRRigidTransform> {
43 DomRoot::from_ref(&self.transform)
44 }
45
46 fn GetLinearVelocity(&self) -> Option<DomRoot<DOMPointReadOnly>> {
48 None
50 }
51
52 fn GetAngularVelocity(&self) -> Option<DomRoot<DOMPointReadOnly>> {
54 None
56 }
57
58 fn EmulatedPosition(&self) -> bool {
60 false
63 }
64}