pub use collide3d::*;
pub use core::physics3d::*;
use cgmath::{BaseFloat, Matrix3, Point3, Quaternion, Vector3};
use collision::Aabb3;
use collision::dbvt::TreeValueWrapped;
use collision::primitive::Primitive3;
use core::Collider;
use specs::{Entity, World};
use physics::{ContactResolutionSystem, CurrentFrameUpdateSystem, NextFrameSetupSystem};
use resources::WithRhusics;
pub type CurrentFrameUpdateSystem3<S> =
CurrentFrameUpdateSystem<Point3<S>, Quaternion<S>, Vector3<S>>;
pub type ContactResolutionSystem3<S> =
ContactResolutionSystem<Point3<S>, Quaternion<S>, Matrix3<S>, Vector3<S>, Vector3<S>>;
pub type NextFrameSetupSystem3<S> =
NextFrameSetupSystem<Point3<S>, Quaternion<S>, Matrix3<S>, Vector3<S>>;
pub fn register_physics<S, Y>(world: &mut World)
where
S: BaseFloat + Send + Sync + 'static,
Y: Collider + Default + Send + Sync + 'static,
{
world.register_physics::<
Primitive3<S>,
Aabb3<S>,
Quaternion<S>,
TreeValueWrapped<Entity, Aabb3<S>>,
Y,
Vector3<S>,
Vector3<S>,
Matrix3<S>
>();
}