pub use collision::algorithm::minkowski::GJK2;
pub use collision::primitive::{Circle, ConvexPolygon, Particle2, Rectangle};
pub use core::{CollisionMode, CollisionStrategy};
pub use core::collide2d::*;
use cgmath::{BaseFloat, Point2, Transform};
use collision::Aabb2;
use collision::dbvt::{DynamicBoundingVolumeTree, TreeValueWrapped};
use collision::primitive::Primitive2;
use specs::{Component, Entity, World};
use collide::{BasicCollisionSystem, SpatialCollisionSystem, SpatialSortingSystem};
use core::{Collider, ContactEvent};
use resources::WithRhusics;
pub type ContactEvent2<S> = ContactEvent<Entity, Point2<S>>;
pub type BasicCollisionSystem2<S, T, Y = ()> =
BasicCollisionSystem<Primitive2<S>, T, TreeValueWrapped<Entity, Aabb2<S>>, Aabb2<S>, Y>;
pub type SpatialSortingSystem2<S, T, Y = ()> =
SpatialSortingSystem<Primitive2<S>, T, TreeValueWrapped<Entity, Aabb2<S>>, Aabb2<S>, Y>;
pub type SpatialCollisionSystem2<S, T, Y = ()> = SpatialCollisionSystem<
Primitive2<S>,
T,
(usize, TreeValueWrapped<Entity, Aabb2<S>>),
Aabb2<S>,
Y,
>;
pub type DynamicBoundingVolumeTree2<S> =
DynamicBoundingVolumeTree<TreeValueWrapped<Entity, Aabb2<S>>>;
pub fn register_collision<S, T, Y>(world: &mut World)
where
S: BaseFloat + Send + Sync + 'static,
T: Transform<Point2<S>> + Component + Send + Sync + 'static,
Y: Collider + Send + Sync + 'static,
{
world.register_collision::<Primitive2<S>, Aabb2<S>, T, TreeValueWrapped<Entity, Aabb2<S>>, Y>();
}