rhusics_ecs/
collide3d.rs

1//! Type wrappers and convenience functions for 3D collision detection
2
3pub use collision::algorithm::minkowski::GJK3;
4pub use collision::primitive::{ConvexPolyhedron, Cuboid, Particle3, Sphere};
5
6pub use core::collide3d::*;
7pub use core::{CollisionMode, CollisionStrategy};
8
9use cgmath::Point3;
10use collision::dbvt::{DynamicBoundingVolumeTree, TreeValueWrapped};
11use collision::primitive::Primitive3;
12use collision::Aabb3;
13use specs::prelude::Entity;
14
15use collide::{BasicCollisionSystem, SpatialCollisionSystem, SpatialSortingSystem};
16use core::ContactEvent;
17
18/// Contact event for 2D
19///
20/// ### Type parameters:
21///
22/// - `S`: Scalar type (f32 or f64)
23pub type ContactEvent3<S> = ContactEvent<Entity, Point3<S>>;
24
25/// ECS collision system for 3D, see
26/// [`BasicCollisionSystem`](../collide/ecs/struct.BasicCollisionSystem.html) for more information.
27///
28/// ### Type parameters:
29///
30/// - `S`: Scalar type (f32 or f64)
31/// - `T`: Transform
32/// - `Y`: Collider type, see `Collider` for more information
33pub type BasicCollisionSystem3<S, T, Y = ()> =
34    BasicCollisionSystem<Primitive3<S>, T, TreeValueWrapped<Entity, Aabb3<S>>, Aabb3<S>, Y>;
35
36/// Spatial sorting system for 3D, see
37/// [`SpatialSortingSystem`](../collide/ecs/struct.SpatialSortingSystem.html) for more information.
38///
39/// ### Type parameters:
40///
41/// - `S`: Scalar type (f32 or f64)
42/// - `T`: Transform
43/// - `Y`: Collider type, see `Collider` for more information
44pub type SpatialSortingSystem3<S, T, Y = ()> =
45    SpatialSortingSystem<Primitive3<S>, T, TreeValueWrapped<Entity, Aabb3<S>>, Aabb3<S>, Y>;
46
47/// Spatial collision system for 3D, see
48/// [`SpatialCollisionSystem`](../collide/ecs/struct.SpatialCollisionSystem.html) for more
49/// information.
50///
51/// ### Type parameters:
52///
53/// - `S`: Scalar type (f32 or f64)
54/// - `T`: Transform
55/// - `Y`: Collider type, see `Collider` for more information
56pub type SpatialCollisionSystem3<S, T, Y = ()> = SpatialCollisionSystem<
57    Primitive3<S>,
58    T,
59    (usize, TreeValueWrapped<Entity, Aabb3<S>>),
60    Aabb3<S>,
61    Y,
62>;
63
64/// Dynamic bounding volume tree for 3D
65///
66/// ### Type parameters:
67///
68/// - `S`: Scalar type (f32 or f64)
69pub type DynamicBoundingVolumeTree3<S> =
70    DynamicBoundingVolumeTree<TreeValueWrapped<Entity, Aabb3<S>>>;