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 #[allow(unused)]
31 pub(crate) fn new(
32 window: &Window,
33 transform: ApiRigidTransform,
34 can_gc: CanGc,
35 ) -> DomRoot<XRPose> {
36 let transform = XRRigidTransform::new(window, transform, can_gc);
37 reflect_dom_object(Box::new(XRPose::new_inherited(&transform)), window, can_gc)
38 }
39}
40
41impl XRPoseMethods<crate::DomTypeHolder> for XRPose {
42 fn Transform(&self) -> DomRoot<XRRigidTransform> {
44 DomRoot::from_ref(&self.transform)
45 }
46
47 fn GetLinearVelocity(&self) -> Option<DomRoot<DOMPointReadOnly>> {
49 None
51 }
52
53 fn GetAngularVelocity(&self) -> Option<DomRoot<DOMPointReadOnly>> {
55 None
57 }
58
59 fn EmulatedPosition(&self) -> bool {
61 false
64 }
65}