Add origin/direction methods to XRRay

This commit is contained in:
Manish Goregaokar 2020-04-08 14:52:04 -07:00
parent b6a9e41bb8
commit 98ff97783e
3 changed files with 30 additions and 4 deletions

View file

@ -2,8 +2,10 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
use crate::dom::bindings::codegen::Bindings::XRRayBinding::XRRayMethods;
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
use crate::dom::bindings::root::DomRoot;
use crate::dom::dompointreadonly::DOMPointReadOnly;
use crate::dom::globalscope::GlobalScope;
use dom_struct::dom_struct;
use webxr_api::{ApiSpace, Ray};
@ -27,3 +29,27 @@ impl XRRay {
reflect_dom_object(Box::new(XRRay::new_inherited(ray)), global)
}
}
impl XRRayMethods for XRRay {
/// https://immersive-web.github.io/hit-test/#dom-xrray-origin
fn Origin(&self) -> DomRoot<DOMPointReadOnly> {
DOMPointReadOnly::new(
&self.global(),
self.ray.origin.x as f64,
self.ray.origin.y as f64,
self.ray.origin.z as f64,
1.,
)
}
/// https://immersive-web.github.io/hit-test/#dom-xrray-direction
fn Direction(&self) -> DomRoot<DOMPointReadOnly> {
DOMPointReadOnly::new(
&self.global(),
self.ray.direction.x as f64,
self.ray.direction.y as f64,
self.ray.direction.z as f64,
0.,
)
}
}