use super::*;
pub trait PenetratesRel2d<T> {
fn penetrates_rel(&self, t: &T, rel: &impl Transformation2d) -> Option<Vec2>;
}
pub trait Penetrates2d<B, T: Transformation2d> {
fn penetrates(&self, a_t: &T, b: &B, b_t: &T) -> Option<Vec2>;
}
impl<A, B, T> Penetrates2d<B, T> for A
where
A: PenetratesRel2d<B>,
T: Transformation2d + DeltaTransform,
{
fn penetrates(&self, a_transform: &T, b: &B, b_transform: &T) -> Option<Vec2> {
let rel = a_transform.delta_transform(b_transform);
self.penetrates_rel(b, &rel)
}
}