feat: add a capsule collider constructor from endpoints.

This commit is contained in:
Sébastien Crozet
2024-04-21 19:40:39 +02:00
committed by Sébastien Crozet
parent f58b4f7c19
commit 33dd38016c
2 changed files with 21 additions and 8 deletions

View File

@@ -19,16 +19,20 @@ pub fn init_world(testbed: &mut Testbed) {
* Ground
*/
let collider =
ColliderBuilder::capsule(point![-10.5, 0.0], point![10.5, 0.0], radius).friction(friction);
colliders.insert(collider);
let collider = ColliderBuilder::capsule(point![-10.5, 0.0], point![-10.5, 20.5], radius)
.friction(friction);
ColliderBuilder::capsule_from_endpoints(point![-10.5, 0.0], point![10.5, 0.0], radius)
.friction(friction);
colliders.insert(collider);
let collider =
ColliderBuilder::capsule(point![10.5, 0.0], point![10.5, 20.5], radius).friction(friction);
ColliderBuilder::capsule_from_endpoints(point![-10.5, 0.0], point![-10.5, 20.5], radius)
.friction(friction);
colliders.insert(collider);
let collider = ColliderBuilder::capsule(point![-10.5, 20.5], point![10.5, 20.5], radius)
.friction(friction);
let collider =
ColliderBuilder::capsule_from_endpoints(point![10.5, 0.0], point![10.5, 20.5], radius)
.friction(friction);
colliders.insert(collider);
let collider =
ColliderBuilder::capsule_from_endpoints(point![-10.5, 20.5], point![10.5, 20.5], radius)
.friction(friction);
colliders.insert(collider);
/*

View File

@@ -583,6 +583,15 @@ impl ColliderBuilder {
Self::new(SharedShape::round_cuboid(hx, hy, border_radius))
}
/// Initialize a new collider builder with a capsule defined from its endpoints.
///
/// See also [`ColliderBuilder::capsule_x`], [`ColliderBuilder::capsule_y`], and
/// [`ColliderBuilder::capsule_z`], for a simpler way to build capsules with common
/// orientations.
pub fn capsule_from_endpoints(a: Point<Real>, b: Point<Real>, radius: Real) -> Self {
Self::new(SharedShape::capsule(a, b, radius))
}
/// Initialize a new collider builder with a capsule shape aligned with the `x` axis.
pub fn capsule_x(half_height: Real, radius: Real) -> Self {
Self::new(SharedShape::capsule_x(half_height, radius))
@@ -781,7 +790,7 @@ impl ColliderBuilder {
/// The default density used by the collider builder.
pub fn default_density() -> Real {
1.0
100.0
}
/// Sets an arbitrary user-defined 128-bit integer associated to the colliders built by this builder.