Fix tests

This commit is contained in:
Sébastien Crozet
2022-01-02 17:43:38 +01:00
parent 90edb4b532
commit 9f9d329360
3 changed files with 55 additions and 8 deletions

View File

@@ -47,7 +47,7 @@ pub fn init_world(testbed: &mut Testbed) {
UnitVector::new_normalize(vector![-1.0, 1.0]) UnitVector::new_normalize(vector![-1.0, 1.0])
}; };
let mut prism = PrismaticJoint::new(axis) let prism = PrismaticJoint::new(axis)
.local_anchor2(point![0.0, shift]) .local_anchor2(point![0.0, shift])
.limit_axis([-1.5, 1.5]); .limit_axis([-1.5, 1.5]);
impulse_joints.insert(curr_parent, curr_child, prism); impulse_joints.insert(curr_parent, curr_child, prism);

View File

@@ -620,7 +620,9 @@ impl BroadPhase {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use crate::dynamics::{ImpulseJointSet, IslandManager, RigidBodyBuilder, RigidBodySet}; use crate::dynamics::{
ImpulseJointSet, IslandManager, MultibodyJointSet, RigidBodyBuilder, RigidBodySet,
};
use crate::geometry::{BroadPhase, ColliderBuilder, ColliderSet}; use crate::geometry::{BroadPhase, ColliderBuilder, ColliderSet};
#[test] #[test]
@@ -629,6 +631,7 @@ mod test {
let mut bodies = RigidBodySet::new(); let mut bodies = RigidBodySet::new();
let mut colliders = ColliderSet::new(); let mut colliders = ColliderSet::new();
let mut impulse_joints = ImpulseJointSet::new(); let mut impulse_joints = ImpulseJointSet::new();
let mut multibody_joints = MultibodyJointSet::new();
let mut islands = IslandManager::new(); let mut islands = IslandManager::new();
let rb = RigidBodyBuilder::new_dynamic().build(); let rb = RigidBodyBuilder::new_dynamic().build();
@@ -639,7 +642,13 @@ mod test {
let mut events = Vec::new(); let mut events = Vec::new();
broad_phase.update(0.0, &mut colliders, &[coh], &[], &mut events); broad_phase.update(0.0, &mut colliders, &[coh], &[], &mut events);
bodies.remove(hrb, &mut islands, &mut colliders, &mut impulse_joints); bodies.remove(
hrb,
&mut islands,
&mut colliders,
&mut impulse_joints,
&mut multibody_joints,
);
broad_phase.update(0.0, &mut colliders, &[], &[coh], &mut events); broad_phase.update(0.0, &mut colliders, &[], &[coh], &mut events);
// Create another body. // Create another body.

View File

@@ -706,11 +706,13 @@ mod test {
use crate::geometry::{BroadPhase, ColliderBuilder, ColliderSet, NarrowPhase}; use crate::geometry::{BroadPhase, ColliderBuilder, ColliderSet, NarrowPhase};
use crate::math::Vector; use crate::math::Vector;
use crate::pipeline::PhysicsPipeline; use crate::pipeline::PhysicsPipeline;
use crate::prelude::MultibodyJointSet;
#[test] #[test]
fn kinematic_and_static_contact_crash() { fn kinematic_and_static_contact_crash() {
let mut colliders = ColliderSet::new(); let mut colliders = ColliderSet::new();
let mut impulse_joints = ImpulseJointSet::new(); let mut impulse_joints = ImpulseJointSet::new();
let mut multibody_joints = MultibodyJointSet::new();
let mut pipeline = PhysicsPipeline::new(); let mut pipeline = PhysicsPipeline::new();
let mut bf = BroadPhase::new(); let mut bf = BroadPhase::new();
let mut nf = NarrowPhase::new(); let mut nf = NarrowPhase::new();
@@ -736,6 +738,7 @@ mod test {
&mut bodies, &mut bodies,
&mut colliders, &mut colliders,
&mut impulse_joints, &mut impulse_joints,
&mut multibody_joints,
&mut CCDSolver::new(), &mut CCDSolver::new(),
&(), &(),
&(), &(),
@@ -746,6 +749,7 @@ mod test {
fn rigid_body_removal_before_step() { fn rigid_body_removal_before_step() {
let mut colliders = ColliderSet::new(); let mut colliders = ColliderSet::new();
let mut impulse_joints = ImpulseJointSet::new(); let mut impulse_joints = ImpulseJointSet::new();
let mut multibody_joints = MultibodyJointSet::new();
let mut pipeline = PhysicsPipeline::new(); let mut pipeline = PhysicsPipeline::new();
let mut bf = BroadPhase::new(); let mut bf = BroadPhase::new();
let mut nf = NarrowPhase::new(); let mut nf = NarrowPhase::new();
@@ -770,7 +774,13 @@ mod test {
let to_delete = [h1, h2, h3, h4]; let to_delete = [h1, h2, h3, h4];
for h in &to_delete { for h in &to_delete {
bodies.remove(*h, &mut islands, &mut colliders, &mut impulse_joints); bodies.remove(
*h,
&mut islands,
&mut colliders,
&mut impulse_joints,
&mut multibody_joints,
);
} }
pipeline.step( pipeline.step(
@@ -782,6 +792,7 @@ mod test {
&mut bodies, &mut bodies,
&mut colliders, &mut colliders,
&mut impulse_joints, &mut impulse_joints,
&mut multibody_joints,
&mut CCDSolver::new(), &mut CCDSolver::new(),
&(), &(),
&(), &(),
@@ -793,6 +804,7 @@ mod test {
fn rigid_body_removal_snapshot_handle_determinism() { fn rigid_body_removal_snapshot_handle_determinism() {
let mut colliders = ColliderSet::new(); let mut colliders = ColliderSet::new();
let mut impulse_joints = ImpulseJointSet::new(); let mut impulse_joints = ImpulseJointSet::new();
let mut multibody_joints = MultibodyJointSet::new();
let mut islands = IslandManager::new(); let mut islands = IslandManager::new();
let mut bodies = RigidBodySet::new(); let mut bodies = RigidBodySet::new();
@@ -801,9 +813,27 @@ mod test {
let h2 = bodies.insert(rb.clone()); let h2 = bodies.insert(rb.clone());
let h3 = bodies.insert(rb.clone()); let h3 = bodies.insert(rb.clone());
bodies.remove(h1, &mut islands, &mut colliders, &mut impulse_joints); bodies.remove(
bodies.remove(h3, &mut islands, &mut colliders, &mut impulse_joints); h1,
bodies.remove(h2, &mut islands, &mut colliders, &mut impulse_joints); &mut islands,
&mut colliders,
&mut impulse_joints,
&mut multibody_joints,
);
bodies.remove(
h3,
&mut islands,
&mut colliders,
&mut impulse_joints,
&mut multibody_joints,
);
bodies.remove(
h2,
&mut islands,
&mut colliders,
&mut impulse_joints,
&mut multibody_joints,
);
let ser_bodies = bincode::serialize(&bodies).unwrap(); let ser_bodies = bincode::serialize(&bodies).unwrap();
let mut bodies2: RigidBodySet = bincode::deserialize(&ser_bodies).unwrap(); let mut bodies2: RigidBodySet = bincode::deserialize(&ser_bodies).unwrap();
@@ -832,6 +862,7 @@ mod test {
let mut colliders = ColliderSet::new(); let mut colliders = ColliderSet::new();
let mut ccd = CCDSolver::new(); let mut ccd = CCDSolver::new();
let mut impulse_joints = ImpulseJointSet::new(); let mut impulse_joints = ImpulseJointSet::new();
let mut multibody_joints = MultibodyJointSet::new();
let mut islands = IslandManager::new(); let mut islands = IslandManager::new();
let physics_hooks = (); let physics_hooks = ();
let event_handler = (); let event_handler = ();
@@ -841,7 +872,13 @@ mod test {
let collider = ColliderBuilder::ball(1.0).build(); let collider = ColliderBuilder::ball(1.0).build();
let c_handle = colliders.insert_with_parent(collider, b_handle, &mut bodies); let c_handle = colliders.insert_with_parent(collider, b_handle, &mut bodies);
colliders.remove(c_handle, &mut islands, &mut bodies, true); colliders.remove(c_handle, &mut islands, &mut bodies, true);
bodies.remove(b_handle, &mut islands, &mut colliders, &mut impulse_joints); bodies.remove(
b_handle,
&mut islands,
&mut colliders,
&mut impulse_joints,
&mut multibody_joints,
);
for _ in 0..10 { for _ in 0..10 {
pipeline.step( pipeline.step(
@@ -853,6 +890,7 @@ mod test {
&mut bodies, &mut bodies,
&mut colliders, &mut colliders,
&mut impulse_joints, &mut impulse_joints,
&mut multibody_joints,
&mut ccd, &mut ccd,
&physics_hooks, &physics_hooks,
&event_handler, &event_handler,