Commit Graph

50 Commits

Author SHA1 Message Date
Crozet Sébastien
705876f5e5 Restore the collision pipeline 2021-04-29 10:26:44 +02:00
Crozet Sébastien
c32da78f2a Split rigid-bodies and colliders into multiple components 2021-04-26 18:00:50 +02:00
Crozet Sébastien
8173e7ada2 Allow collider modification after its insersion to the ColliderSet. 2021-03-29 14:54:54 +02:00
Crozet Sébastien
dec3e4197f Small refactoring of the PhysicsPipeline. 2021-03-28 11:54:33 +02:00
Crozet Sébastien
7306821c46 Attenuate the warmstart impulse for CCD contacts.
CCD contacts result in very strong, instantaneous, impulses. So it is preferable to attenuate their contribution to subsequent timesteps to avoid overshooting.
2021-03-28 11:27:07 +02:00
Crozet Sébastien
97157c9423 First working version of non-linear CCD based on single-substep motion-clamping. 2021-03-26 18:16:27 +01:00
Crozet Sébastien
f53d0438ed Contact modification: make the contact normal modifiable too. 2021-02-25 15:40:54 +01:00
Crozet Sébastien
96ecb877e2 Implement dominance. 2021-02-24 13:26:51 +01:00
Crozet Sébastien
babcab0bed Update the testbed to use PhysicsHooks. 2021-02-23 15:49:23 +01:00
Crozet Sébastien
00706e8b36 Introduce the PhysicsHook trait used for both contact filtering and contact modification. 2021-02-23 11:24:54 +01:00
Crozet Sébastien
ad5c10672e Use contact ids instead of contact reordering in order to identify the impulse writeback location. 2021-02-22 17:52:03 +01:00
Emil Ernerfeldt
f2d9225101 Add ColliderHandle:s to PairFilterContext
This makes it easy to write custom filters based on the handles.

For instance, a user can add pairs of `ColliderHandle`s into a `HashSet` and
do a lookup in a `ContactPairFilter` to easily (if maybe not efficiently)
disable collisions between pairs of colliders.

The same could be accomplished by using the `user_data: u128` field of the
`Collider`, but it would be less ergonomic, and also with this PR that
`user_data` space can be saved for more important things.
2021-02-17 11:19:51 +01:00
Emil Ernerfeldt
85bc81d4fc Make clippy a bit happier 2021-02-04 13:11:04 +01:00
Crozet Sébastien
8f7220f03d Rename cdl to parry. 2021-01-24 11:13:44 +01:00
Crozet Sébastien
98d3980db7 Allow several rules for combining friction/restitution coefficients. 2021-01-21 16:03:27 +01:00
Crozet Sébastien
0ade350b5f Use newtypes for collider, rigid-body and joint handles. 2021-01-20 16:33:42 +01:00
Crozet Sébastien
00da4aaa42 Add compound shape support. 2021-01-05 15:34:48 +01:00
Crozet Sébastien
aa61fe65e3 Add support of 64-bits reals. 2021-01-04 15:14:25 +01:00
Crozet Sébastien
7b098606c2 QueryPipeline: add shape casting, point projection, and intersection queries. 2020-12-31 16:30:38 +01:00
Crozet Sébastien
1feac2e02d Restore contact events. 2020-12-31 11:37:42 +01:00
Crozet Sébastien
967145a949 Perform contact sorting in the narrow-phase directly. 2020-12-31 11:16:03 +01:00
Crozet Sébastien
43628c8846 Try using solver contacts again, but in a more cache-coherent way. 2020-12-30 17:30:07 +01:00
Crozet Sébastien
5876a262da Remove the useless manifold.data.pair field. 2020-12-30 11:44:08 +01:00
Crozet Sébastien
0fb4b4faef Use Isometry::inv_mul. 2020-12-29 11:31:59 +01:00
Crozet Sébastien
a0c2a2c309 Fix compilation when serde is enabled. 2020-12-29 11:31:59 +01:00
Crozet Sébastien
5c38113690 Fix compilation when serde isn't enabled. 2020-12-29 11:31:59 +01:00
Crozet Sébastien
8fe2df126a Remove some irrelevant code. 2020-12-29 11:31:59 +01:00
Crozet Sébastien
29717c2887 Externalize the proximity code (renamed intersection). 2020-12-29 11:31:59 +01:00
Crozet Sébastien
e231bacec6 Move all the contact manifold computations out of Rapier. 2020-12-29 11:31:00 +01:00
Crozet Sébastien
cc6d1b9730 Outsource the Shape trait, wquadtree, and shape types. 2020-12-29 11:31:00 +01:00
Crozet Sébastien
9bf1321f8f Outsource the contact manifold, SAT, and some shapes. 2020-12-29 11:31:00 +01:00
Crozet Sébastien
d98be2359d Add methods to iterate through all the contact and proximity pairs. 2020-11-24 16:39:09 +01:00
Crozet Sébastien
437748096d Allow retrieving one specific contact pair or proximity pair. 2020-11-24 15:21:27 +01:00
Crozet Sébastien
dc63c28f56 Fix crash when removing a collider with no graph ID. 2020-11-24 14:57:37 +01:00
Crozet Sébastien
af39ec54d3 Remove the narrow-phase graph indices from the collider.
They are on the narrow-phase now.
2020-11-23 15:56:53 +01:00
Crozet Sébastien
0cf59d78bd Implement Clone for everything that can be cloned. 2020-11-03 14:43:21 +01:00
Crozet Sébastien
01af6c09a7 Fix simulation reaching different states when started from different snaphots. 2020-11-02 15:08:46 +01:00
Crozet Sébastien
74f0297221 Fix performance regression due to sleeping objects pairs no longer being ignored by the narrow-phase. 2020-10-27 17:17:14 +01:00
Crozet Sébastien
3bfa407999 ContactPairFilter: don't overwrite the effect of the solver groups.
This is more consistent with the fact that the effect of collision groups is not overwritten either.
2020-10-27 16:49:24 +01:00
Crozet Sébastien
24bd97636e Rename SolverFlags::COMPUTE_FORCES to SolverFlags::COMPUTE_IMPULSES.
This is closer to what the solver actually does.
2020-10-27 16:21:33 +01:00
Crozet Sébastien
cc44b65094 Added user-implementable traits for collision/proximity pair filtering. 2020-10-27 16:12:40 +01:00
Crozet Sébastien
5a5ba9cf59 Take the solver flags into account when collecting contact manifolds to solve. 2020-10-27 14:35:01 +01:00
Crozet Sébastien
cb6a7ff946 Add solver flags for controlling whether or not some contacts should be taken into account by the constraints solver. 2020-10-27 14:35:01 +01:00
Crozet Sébastien
3def91d62e Add collision groups to filter collision pairs. 2020-10-27 14:35:01 +01:00
Crozet Sébastien
865ce8a8e5 Collider shape: use a trait-object instead of an enum. 2020-10-20 11:56:09 +02:00
Crozet Sébastien
682ff61f94 Don't let the PubSub internal offsets overflow + fix some warnings. 2020-10-06 15:23:48 +02:00
Crozet Sébastien
93aa7b6e1e Use the publish-subscribe mechanism to handle collider removals across pipelines. 2020-10-05 19:04:18 +02:00
Crozet Sébastien
7b8e322446 Make kinematic bodies properly wake up dynamic bodies. 2020-09-28 15:27:25 +02:00
Sébastien Crozet
03b437f278 Disallow contacts between two colliders attached to the same parent. 2020-08-31 19:05:14 +02:00
Sébastien Crozet
754a48b7ff First public release of Rapier. 2020-08-25 22:10:25 +02:00