use crate::collision::Manifold;
use crate::id::{BodyId, ContactId, JointId, ShapeId};
use crate::math_functions::{Pos, Vec2, WorldTransform};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct SensorBeginTouchEvent {
pub sensor_shape_id: ShapeId,
pub visitor_shape_id: ShapeId,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct SensorEndTouchEvent {
pub sensor_shape_id: ShapeId,
pub visitor_shape_id: ShapeId,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ContactBeginTouchEvent {
pub shape_id_a: ShapeId,
pub shape_id_b: ShapeId,
pub contact_id: ContactId,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ContactEndTouchEvent {
pub shape_id_a: ShapeId,
pub shape_id_b: ShapeId,
pub contact_id: ContactId,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ContactHitEvent {
pub shape_id_a: ShapeId,
pub shape_id_b: ShapeId,
pub contact_id: ContactId,
pub point: Pos,
pub normal: Vec2,
pub approach_speed: f32,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct BodyMoveEvent {
pub user_data: u64,
pub transform: WorldTransform,
pub body_id: BodyId,
pub fell_asleep: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct JointEvent {
pub joint_id: JointId,
pub user_data: u64,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ContactData {
pub contact_id: ContactId,
pub shape_id_a: ShapeId,
pub shape_id_b: ShapeId,
pub manifold: Manifold,
}