diff options
| author | Crozet Sébastien <developer@crozet.re> | 2020-11-25 16:00:02 +0100 |
|---|---|---|
| committer | Crozet Sébastien <developer@crozet.re> | 2020-11-25 16:28:49 +0100 |
| commit | 2d4e14b869bd8d0b2eb6629b7b10719d657d2be8 (patch) | |
| tree | 23620aebb55ba1132f29560f9ed1a168fa328f25 /src/pipeline | |
| parent | 72eb66425d6875704a59c077e92c1fddc51cd881 (diff) | |
| download | rapier-2d4e14b869bd8d0b2eb6629b7b10719d657d2be8.tar.gz rapier-2d4e14b869bd8d0b2eb6629b7b10719d657d2be8.tar.bz2 rapier-2d4e14b869bd8d0b2eb6629b7b10719d657d2be8.zip | |
Properly track some user-initiatied rigid-body modifications.
Diffstat (limited to 'src/pipeline')
| -rw-r--r-- | src/pipeline/collision_pipeline.rs | 2 | ||||
| -rw-r--r-- | src/pipeline/physics_pipeline.rs | 8 |
2 files changed, 3 insertions, 7 deletions
diff --git a/src/pipeline/collision_pipeline.rs b/src/pipeline/collision_pipeline.rs index 845bb86..188be27 100644 --- a/src/pipeline/collision_pipeline.rs +++ b/src/pipeline/collision_pipeline.rs @@ -47,7 +47,7 @@ impl CollisionPipeline { proximity_pair_filter: Option<&dyn ProximityPairFilter>, events: &dyn EventHandler, ) { - bodies.maintain_active_set(); + bodies.maintain(colliders); self.broadphase_collider_pairs.clear(); broad_phase.update_aabbs(prediction_distance, bodies, colliders); diff --git a/src/pipeline/physics_pipeline.rs b/src/pipeline/physics_pipeline.rs index 3a4851d..dc4b69f 100644 --- a/src/pipeline/physics_pipeline.rs +++ b/src/pipeline/physics_pipeline.rs @@ -74,9 +74,9 @@ impl PhysicsPipeline { events: &dyn EventHandler, ) { self.counters.step_started(); + bodies.maintain(colliders); broad_phase.maintain(colliders); narrow_phase.maintain(colliders, bodies); - bodies.maintain_active_set(); // Update kinematic bodies velocities. // TODO: what is the best place for this? It should at least be @@ -242,11 +242,7 @@ impl PhysicsPipeline { rb.update_predicted_position(integration_parameters.dt()); } - for handle in &rb.colliders { - let collider = &mut colliders[*handle]; - collider.position = rb.position * collider.delta; - collider.predicted_position = rb.predicted_position * collider.delta; - } + rb.update_colliders_positions(colliders); }); self.counters.stages.solver_time.pause(); |
