Physics library for use in Specs, using cgmath and collision-rs.
```rust extern crate cgmath; extern crate rhusics; extern crate specs;
use cgmath::{Point2, Rad, Rotation2, Transform}; use specs::{RunNow, World};
use rhusics::collide2d::{world_register, BasicCollisionSystem2, BodyPose2, BroadBruteForce2, CollisionMode, CollisionShape2, CollisionStrategy, Contacts2, GJK2, Rectangle};
pub fn main() {
let mut world = World::new();
world_register::
world
.create_entity()
.with(CollisionShape2::<BodyPose2>::new_simple(
CollisionStrategy::FullResolution,
CollisionMode::Discrete,
Rectangle::new(10., 10.).into(),
))
.with(BodyPose2::one());
world
.create_entity()
.with(CollisionShape2::<BodyPose2>::new_simple(
CollisionStrategy::FullResolution,
CollisionMode::Discrete,
Rectangle::new(10., 10.).into(),
))
.with(BodyPose2::new(
Point2::new(3., 2.),
Rotation2::from_angle(Rad(0.)),
));
let mut system = BasicCollisionSystem2::<BodyPose2>::new()
.with_broad_phase(BroadBruteForce2::default())
.with_narrow_phase(GJK2::new());
system.run_now(&world.res);
println!("Contacts: {:?}", *world.read_resource::<Contacts2>());
} ```
specs::System
for collision
detection working on user supplied transform, and shape components.
Can optionally use broad and/or narrow phase detection.
Library supplies a transform implementation for convenience.specs::System
for spatial
sorting on user supplied transform, and shape components.double
feature.