feat: switch to the new Bvh from parry for the broad-phase (#853)

* feat: switch to the new Bvh from parry for the broad-phase

* chore: cargo fmt + update testbed

* chore: remove the multi-grid SAP broad-phase

* fix soft-ccd handling in broad-phase

* Fix contact cleanup in broad-phase after collider removal

* chore: clippy fixes

* fix CCD regression

* chore: update changelog

* fix build with the parallel feature enabled

* chore: remove the now useless broad-phase proxy index from colliders

* fix tests
This commit is contained in:
Sébastien Crozet
2025-07-11 22:36:40 +02:00
committed by GitHub
parent 86a257d4f1
commit 95bd6fcfeb
212 changed files with 2140 additions and 3953 deletions

View File

@@ -20,10 +20,12 @@ mod joint_fixed3;
mod joint_prismatic3;
mod joint_revolute3;
mod keva3;
mod many_kinematics3;
mod many_pyramids3;
mod many_sleep3;
mod many_static3;
mod pyramid3;
mod ray_cast3;
mod stacks3;
mod trimesh3;
@@ -47,9 +49,8 @@ fn parse_command_line() -> Command {
Command::RunAll
}
pub fn main() {
let command = parse_command_line();
#[allow(clippy::type_complexity)]
pub fn demo_builders() -> Vec<(&'static str, fn(&mut Testbed))> {
let mut builders: Vec<(_, fn(&mut Testbed))> = vec![
("Balls", balls3::init_world),
("Boxes", boxes3::init_world),
@@ -57,6 +58,7 @@ pub fn main() {
("CCD", ccd3::init_world),
("Compound", compound3::init_world),
("Convex polyhedron", convex_polyhedron3::init_world),
("Many kinematics", many_kinematics3::init_world),
("Many static", many_static3::init_world),
("Many sleep", many_sleep3::init_world),
("Heightfield", heightfield3::init_world),
@@ -69,6 +71,7 @@ pub fn main() {
("ImpulseJoint prismatic", joint_prismatic3::init_world),
("Many pyramids", many_pyramids3::init_world),
("Keva tower", keva3::init_world),
("Ray cast", ray_cast3::init_world),
];
// Lexicographic sort, with stress tests moved at the end of the list.
@@ -77,6 +80,12 @@ pub fn main() {
(true, false) => Ordering::Greater,
(false, true) => Ordering::Less,
});
builders
}
pub fn main() {
let command = parse_command_line();
let builders = demo_builders();
match command {
Command::Run(demo) => {
@@ -86,7 +95,7 @@ pub fn main() {
{
TestbedApp::from_builders(vec![builders[i]]).run()
} else {
eprintln!("Invalid example to run provided: '{}'", demo);
eprintln!("Invalid example to run provided: '{demo}'");
}
}
Command::RunAll => TestbedApp::from_builders(builders).run(),