66 lines
1.4 KiB
Rust
66 lines
1.4 KiB
Rust
|
|
use crate::math::RawVector;
|
||
|
|
use crate::utils::{self, FlatHandle};
|
||
|
|
use rapier::geometry::{ColliderHandle, ShapeCastHit};
|
||
|
|
use wasm_bindgen::prelude::*;
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub struct RawShapeCastHit {
|
||
|
|
pub(crate) hit: ShapeCastHit,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
impl RawShapeCastHit {
|
||
|
|
pub fn time_of_impact(&self) -> f32 {
|
||
|
|
self.hit.time_of_impact
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn witness1(&self) -> RawVector {
|
||
|
|
self.hit.witness1.coords.into()
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn witness2(&self) -> RawVector {
|
||
|
|
self.hit.witness2.coords.into()
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn normal1(&self) -> RawVector {
|
||
|
|
self.hit.normal1.into_inner().into()
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn normal2(&self) -> RawVector {
|
||
|
|
self.hit.normal2.into_inner().into()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub struct RawColliderShapeCastHit {
|
||
|
|
pub(crate) handle: ColliderHandle,
|
||
|
|
pub(crate) hit: ShapeCastHit,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
impl RawColliderShapeCastHit {
|
||
|
|
pub fn colliderHandle(&self) -> FlatHandle {
|
||
|
|
utils::flat_handle(self.handle.0)
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn time_of_impact(&self) -> f32 {
|
||
|
|
self.hit.time_of_impact
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn witness1(&self) -> RawVector {
|
||
|
|
self.hit.witness1.coords.into()
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn witness2(&self) -> RawVector {
|
||
|
|
self.hit.witness2.coords.into()
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn normal1(&self) -> RawVector {
|
||
|
|
self.hit.normal1.into_inner().into()
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn normal2(&self) -> RawVector {
|
||
|
|
self.hit.normal2.into_inner().into()
|
||
|
|
}
|
||
|
|
}
|