feat: migrate to glam whenever relevant + migrate testbed to kiss3d instead of bevy + release v0.32.0 (#909)

* feat: migrate to glam whenever relevant + migrate testbed to kiss3d instead of bevy

* chore: update changelog

* Fix warnings and tests

* Release v0.32.0
This commit is contained in:
Sébastien Crozet
2026-01-09 17:26:36 +01:00
committed by GitHub
parent 48de83817e
commit 0b7c3b34ec
265 changed files with 8501 additions and 8575 deletions

View File

@@ -7,8 +7,8 @@ default-run = "all_examples3-f64"
[features]
parallel = ["rapier3d-f64/parallel", "rapier_testbed3d-f64/parallel"]
simd-stable = ["rapier3d-f64/simd-stable"]
simd-nightly = ["rapier3d-f64/simd-nightly"]
#simd-stable = ["rapier3d-f64/simd-stable"]
#simd-nightly = ["rapier3d-f64/simd-nightly"]
enhanced-determinism = ["rapier3d-f64/enhanced-determinism"]
[dependencies]
@@ -18,6 +18,7 @@ wasm-bindgen = "0.2"
obj-rs = { version = "0.7", default-features = false }
bincode = "1"
serde = "1"
kiss3d = { version = "0.40.0", features = ["egui", "parry", "serde"] }
[dependencies.rapier_testbed3d-f64]
path = "../crates/rapier_testbed3d-f64"

View File

@@ -5,26 +5,22 @@ use wasm_bindgen::prelude::*;
extern crate rapier3d_f64 as rapier3d;
extern crate rapier_testbed3d_f64 as rapier_testbed3d;
use rapier_testbed3d::{Testbed, TestbedApp};
use std::cmp::Ordering;
use rapier_testbed3d::{Example, TestbedApp};
mod debug_serialized3;
mod trimesh3_f64;
#[cfg_attr(target_arch = "wasm32", wasm_bindgen(start))]
pub fn main() {
let mut builders: Vec<(_, fn(&mut Testbed))> = vec![
("Trimesh", trimesh3_f64::init_world),
("(Debug) serialized", debug_serialized3::init_world),
#[kiss3d::main]
pub async fn main() {
let builders: Vec<_> = vec![
Example::new("Demos f64", "Trimesh", trimesh3_f64::init_world),
Example::new(
"Demos f64",
"(Debug) serialized",
debug_serialized3::init_world,
),
];
// Lexicographic sort, with stress tests moved at the end of the list.
builders.sort_by(|a, b| match (a.0.starts_with('('), b.0.starts_with('(')) {
(true, true) | (false, false) => a.0.cmp(b.0),
(true, false) => Ordering::Greater,
(false, true) => Ordering::Less,
});
let testbed = TestbedApp::from_builders(builders);
testbed.run()
testbed.run().await
}

View File

@@ -34,6 +34,6 @@ pub fn init_world(testbed: &mut Testbed) {
testbed.harness_mut().physics.narrow_phase = state.narrow_phase;
testbed.harness_mut().physics.ccd_solver = state.ccd_solver;
testbed.set_graphics_shift(vector![-541.0, -6377257.0, -61.0]);
testbed.look_at(point![10.0, 10.0, 10.0], point![0.0, 0.0, 0.0]);
testbed.set_graphics_shift([-541.0, -6377257.0, -61.0].into());
testbed.look_at([10.0, 10.0, 10.0].into(), [0.0, 0.0, 0.0].into());
}

View File

@@ -1,4 +1,5 @@
use rapier_testbed3d::Testbed;
use rapier3d::glamx::{DVec3, Vec3};
use rapier3d::na::ComplexField;
use rapier3d::prelude::*;
@@ -14,10 +15,10 @@ pub fn init_world(testbed: &mut Testbed) {
/*
* Ground
*/
let ground_size = vector![200.0, 1.0, 200.0];
let ground_size = DVec3::new(200.0, 1.0, 200.0);
let nsubdivs = 20;
let heights = DMatrix::from_fn(nsubdivs + 1, nsubdivs + 1, |i, j| {
let heights = Array2::from_fn(nsubdivs + 1, nsubdivs + 1, |i, j| {
if i == 0 || i == nsubdivs || j == 0 || j == nsubdivs {
10.0
} else {
@@ -60,7 +61,7 @@ pub fn init_world(testbed: &mut Testbed) {
let z = k as f64 * shift - centerz;
// Build the rigid body.
let rigid_body = RigidBodyBuilder::dynamic().translation(vector![x, y, z]);
let rigid_body = RigidBodyBuilder::dynamic().translation(DVec3::new(x, y, z));
let handle = bodies.insert(rigid_body);
if j % 2 == 0 {
@@ -78,5 +79,5 @@ pub fn init_world(testbed: &mut Testbed) {
* Set up the testbed.
*/
testbed.set_world(bodies, colliders, impulse_joints, multibody_joints);
testbed.look_at(point![100.0, 100.0, 100.0], Point::origin());
testbed.look_at(Vec3::new(100.0, 100.0, 100.0), Vec3::ZERO);
}