use std::convert::TryFrom;
use crate::collision::{proximity, Proximity};
#[derive(Clone, Debug, PartialEq)]
pub struct Intersection {
penetration : Proximity,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Relation {
Partial,
AinB,
BinA
}
impl Intersection {
#[inline]
pub const fn penetration (&self) -> &Proximity {
&self.penetration
}
}
impl TryFrom <Proximity> for Intersection {
type Error = Proximity;
fn try_from (proximity : Proximity) -> Result <Self, Proximity> {
match proximity.relation() {
proximity::Relation::Intersect
=> Ok (Intersection { penetration: proximity }),
_ => Err(proximity)
}
}
}