pub use area_server::{AreaDesc, AreaPhysicsServerTrait, OverlapEvent};
pub use body_server::{BodyMode, ContactEvent, RBodyPhysicsServerTrait, RigidBodyDesc};
pub use joint_server::{JointDesc, JointPhysicsServerTrait, JointPosition};
pub use shape_server::{ShapeDesc, ShapePhysicsServerTrait};
pub use world_server::WorldPhysicsServerTrait;
#[allow(missing_debug_implementations)]
pub struct PhysicsWorld<N> {
world_server: Box<dyn WorldPhysicsServerTrait<N>>,
rigid_body_server: Box<dyn RBodyPhysicsServerTrait<N>>,
area_server: Box<dyn AreaPhysicsServerTrait<N>>,
shape_server: Box<dyn ShapePhysicsServerTrait<N>>,
joint_server: Box<dyn JointPhysicsServerTrait<N>>,
}
impl<N> PhysicsWorld<N> {
pub fn new(
world_server: Box<dyn WorldPhysicsServerTrait<N>>,
rigid_body_server: Box<dyn RBodyPhysicsServerTrait<N>>,
area_server: Box<dyn AreaPhysicsServerTrait<N>>,
shape_server: Box<dyn ShapePhysicsServerTrait<N>>,
joint_server: Box<dyn JointPhysicsServerTrait<N>>,
) -> Self {
PhysicsWorld {
world_server,
rigid_body_server,
area_server,
shape_server,
joint_server,
}
}
pub fn world_server(&self) -> &dyn WorldPhysicsServerTrait<N> {
self.world_server.as_ref()
}
pub fn rigid_body_server(&self) -> &dyn RBodyPhysicsServerTrait<N> {
self.rigid_body_server.as_ref()
}
pub fn area_server(&self) -> &dyn AreaPhysicsServerTrait<N> {
self.area_server.as_ref()
}
pub fn shape_server(&self) -> &dyn ShapePhysicsServerTrait<N> {
self.shape_server.as_ref()
}
pub fn joint_server(&self) -> &dyn JointPhysicsServerTrait<N> {
self.joint_server.as_ref()
}
}
unsafe impl<N> Send for PhysicsWorld<N> {}
unsafe impl<N> Sync for PhysicsWorld<N> {}
mod area_server;
mod body_server;
mod joint_server;
mod shape_server;
mod world_server;