use super::*;
pub trait PenetratesRel3d<B> {
fn penetrates_rel(&self, t: &B, rel: &impl Transformation3d) -> Option<Vec3>;
}
pub trait Penetrates3d<B, T: Transformation3d> {
fn penetrates(&self, transform: &T, other: &B, other_transform: &T) -> Option<Vec3>;
}
impl<A, B, T> Penetrates3d<B, T> for A
where
A: PenetratesRel3d<B>,
T: Transformation3d + DeltaTransform,
{
fn penetrates(&self, transform: &T, t: &B, t_transform: &T) -> Option<Vec3> {
let rel = transform.delta_transform(t_transform);
self.penetrates_rel(t, &rel)
}
}