linear_sim/collision/
intersection.rs1use std::convert::TryFrom;
2
3use crate::collision::{proximity, Proximity};
4
5#[derive(Clone, Debug, PartialEq)]
7pub struct Intersection {
8 penetration : Proximity,
9 }
12
13#[derive(Clone, Copy, Debug, Eq, PartialEq)]
14pub enum Relation {
15 Partial,
17 AinB,
18 BinA
19}
20
21impl Intersection {
22 #[inline]
23 pub fn penetration (&self) -> &Proximity {
24 &self.penetration
25 }
26}
27impl TryFrom <Proximity> for Intersection {
28 type Error = Proximity;
29 fn try_from (proximity : Proximity) -> Result <Self, Proximity> {
30 match proximity.relation() {
31 proximity::Relation::Intersect
32 => Ok (Intersection { penetration: proximity }),
33 _ => Err(proximity)
34 }
35 }
36}