Fix tests.

This commit is contained in:
Crozet Sébastien
2021-04-29 13:03:54 +02:00
parent 5cf805075e
commit ac8ec8e351
3 changed files with 29 additions and 15 deletions

View File

@@ -583,7 +583,7 @@ impl BroadPhase {
#[cfg(test)]
mod test {
use crate::dynamics::{JointSet, RigidBodyBuilder, RigidBodySet};
use crate::dynamics::{IslandManager, JointSet, RigidBodyBuilder, RigidBodySet};
use crate::geometry::{BroadPhase, ColliderBuilder, ColliderSet};
#[test]
@@ -592,25 +592,26 @@ mod test {
let mut bodies = RigidBodySet::new();
let mut colliders = ColliderSet::new();
let mut joints = JointSet::new();
let mut islands = IslandManager::new();
let rb = RigidBodyBuilder::new_dynamic().build();
let co = ColliderBuilder::ball(0.5).build();
let hrb = bodies.insert(rb);
colliders.insert(co, hrb, &mut bodies);
let coh = colliders.insert(co, hrb, &mut bodies);
let mut events = Vec::new();
broad_phase.update(0.0, &mut colliders, &mut events);
broad_phase.update(0.0, &mut colliders, &[coh], &[], &mut events);
bodies.remove(hrb, &mut colliders, &mut joints);
broad_phase.update(0.0, &mut colliders, &mut events);
bodies.remove(hrb, &mut islands, &mut colliders, &mut joints);
broad_phase.update(0.0, &mut colliders, &[], &[coh], &mut events);
// Create another body.
let rb = RigidBodyBuilder::new_dynamic().build();
let co = ColliderBuilder::ball(0.5).build();
let hrb = bodies.insert(rb);
colliders.insert(co, hrb, &mut bodies);
let coh = colliders.insert(co, hrb, &mut bodies);
// Make sure the proxy handles is recycled properly.
broad_phase.update(0.0, &mut colliders, &mut events);
broad_phase.update(0.0, &mut colliders, &[coh], &[], &mut events);
}
}

View File

@@ -696,7 +696,7 @@ impl PhysicsPipeline {
#[cfg(test)]
mod test {
use crate::dynamics::{
CCDSolver, IntegrationParameters, JointSet, RigidBodyBuilder, RigidBodySet,
CCDSolver, IntegrationParameters, IslandManager, JointSet, RigidBodyBuilder, RigidBodySet,
};
use crate::geometry::{BroadPhase, ColliderBuilder, ColliderSet, NarrowPhase};
use crate::math::Vector;
@@ -710,6 +710,7 @@ mod test {
let mut bf = BroadPhase::new();
let mut nf = NarrowPhase::new();
let mut bodies = RigidBodySet::new();
let mut islands = IslandManager::new();
let rb = RigidBodyBuilder::new_static().build();
let h1 = bodies.insert(rb.clone());
@@ -724,6 +725,7 @@ mod test {
pipeline.step(
&Vector::zeros(),
&IntegrationParameters::default(),
&mut islands,
&mut bf,
&mut nf,
&mut bodies,
@@ -742,6 +744,7 @@ mod test {
let mut pipeline = PhysicsPipeline::new();
let mut bf = BroadPhase::new();
let mut nf = NarrowPhase::new();
let mut islands = IslandManager::new();
let mut bodies = RigidBodySet::new();
@@ -762,12 +765,13 @@ mod test {
let to_delete = [h1, h2, h3, h4];
for h in &to_delete {
bodies.remove(*h, &mut colliders, &mut joints);
bodies.remove(*h, &mut islands, &mut colliders, &mut joints);
}
pipeline.step(
&Vector::zeros(),
&IntegrationParameters::default(),
&mut islands,
&mut bf,
&mut nf,
&mut bodies,
@@ -784,6 +788,7 @@ mod test {
fn rigid_body_removal_snapshot_handle_determinism() {
let mut colliders = ColliderSet::new();
let mut joints = JointSet::new();
let mut islands = IslandManager::new();
let mut bodies = RigidBodySet::new();
let rb = RigidBodyBuilder::new_dynamic().build();
@@ -791,9 +796,9 @@ mod test {
let h2 = bodies.insert(rb.clone());
let h3 = bodies.insert(rb.clone());
bodies.remove(h1, &mut colliders, &mut joints);
bodies.remove(h3, &mut colliders, &mut joints);
bodies.remove(h2, &mut colliders, &mut joints);
bodies.remove(h1, &mut islands, &mut colliders, &mut joints);
bodies.remove(h3, &mut islands, &mut colliders, &mut joints);
bodies.remove(h2, &mut islands, &mut colliders, &mut joints);
let ser_bodies = bincode::serialize(&bodies).unwrap();
let mut bodies2: RigidBodySet = bincode::deserialize(&ser_bodies).unwrap();
@@ -822,6 +827,7 @@ mod test {
let mut colliders = ColliderSet::new();
let mut ccd = CCDSolver::new();
let mut joints = JointSet::new();
let mut islands = IslandManager::new();
let physics_hooks = ();
let event_handler = ();
@@ -829,13 +835,14 @@ mod test {
let b_handle = bodies.insert(body);
let collider = ColliderBuilder::ball(1.0).build();
let c_handle = colliders.insert(collider, b_handle, &mut bodies);
colliders.remove(c_handle, &mut bodies, true);
bodies.remove(b_handle, &mut colliders, &mut joints);
colliders.remove(c_handle, &mut islands, &mut bodies, true);
bodies.remove(b_handle, &mut islands, &mut colliders, &mut joints);
for _ in 0..10 {
pipeline.step(
&gravity,
&integration_parameters,
&mut islands,
&mut broad_phase,
&mut narrow_phase,
&mut bodies,

View File

@@ -60,8 +60,14 @@ pub(crate) fn handle_user_changes_to_rigid_bodies<Bodies, Colliders>(
for handle in modified_bodies {
let mut final_action = None;
let changes: Option<&RigidBodyChanges> = bodies.get(handle.0);
let mut changes: RigidBodyChanges = *bodies.index(handle.0);
if changes.is_none() {
// The body no longer exists.
continue;
}
let mut changes = *changes.unwrap();
let mut ids: RigidBodyIds = *bodies.index(handle.0);
let mut activation: RigidBodyActivation = *bodies.index(handle.0);
let (status, rb_colliders, poss): (