Commit Graph

509 Commits

Author SHA1 Message Date
Emil Ernerfeldt
48708d9a76 Implement revolute narrow 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
d3f39a9bab Implemented prismatic narrow. Needs testing and close review 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
ede4f0f770 cleanup 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
3f26b46196 Implement ball wide 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
4162aed2a0 Add params.velocity_based_erp_inv_dt() helper 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
21247a1236 Add restorative impulse in velocity solver 2021-02-26 11:06:29 +01:00
Sébastien Crozet
1c5601c84b Merge pull request #124 from dimforge/modify_contact_normal
Contact modification: make the contact normal modifiable too.
2021-02-25 15:53:06 +01:00
Crozet Sébastien
f53d0438ed Contact modification: make the contact normal modifiable too. 2021-02-25 15:40:54 +01:00
Sébastien Crozet
f41a6fb76d Merge pull request #122 from dimforge/dominance
Implement dominance groups
2021-02-25 15:38:10 +01:00
Sébastien Crozet
8e40ab758d Merge pull request #123 from EmbarkStudios/modify-joints
Add JointSet::get_mut and get_unknown_gen_mut
2021-02-24 16:17:17 +01:00
Emil Ernerfeldt
277d74fb18 less mut
Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-02-24 15:59:11 +01:00
Emil Ernerfeldt
69afb2914a less mut
Co-authored-by: Sébastien Crozet <sebastien@crozet.re>
2021-02-24 15:59:06 +01:00
Emil Ernerfeldt
504b84bb06 Add JointSet::get_mut and get_unknown_gen_mut
Fix https://github.com/dimforge/rapier/issues/121
2021-02-24 15:20:48 +01:00
Crozet Sébastien
9cdd34c741 Fix the parallel build. 2021-02-24 13:40:26 +01:00
Crozet Sébastien
96ecb877e2 Implement dominance. 2021-02-24 13:26:51 +01:00
Sébastien Crozet
649eba1013 Merge pull request #120 from dimforge/contact_modification
Add the ability to modify the contact points seen by the constraints solver
2021-02-24 11:26:53 +01:00
Crozet Sébastien
3cc2738e5f Fix warnings in the WASM build. 2021-02-23 16:47:48 +01:00
Crozet Sébastien
a60c6e5fdd Fix the compilation of tests. 2021-02-23 16:26:02 +01:00
Crozet Sébastien
0f0f2c344f Rename modify_contacts -> modify_solver_contacts. 2021-02-23 16:02:19 +01:00
Crozet Sébastien
babcab0bed Update the testbed to use PhysicsHooks. 2021-02-23 15:49:23 +01:00
Crozet Sébastien
f8bf96fdc8 Add a helper function for one-way platforms. 2021-02-23 15:48:04 +01:00
Crozet Sébastien
b3405e5672 Add a method to modify all the active dynamic bodies on the RigidBodySet. 2021-02-23 15:47:44 +01:00
Crozet Sébastien
3fdb4cd6d3 Properly take the tangent_velocity into account in the velocity solver. 2021-02-23 15:47:24 +01:00
Crozet Sébastien
4ca32a9546 Add one-way platform + conveyor belt demos. 2021-02-23 15:43:43 +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
Sébastien Crozet
d31a327b45 Merge pull request #119 from dimforge/joint_drive
Add joint motors
2021-02-22 17:40:29 +01:00
Crozet Sébastien
e5c4c2e8ff Ball joint: remove unused field. 2021-02-22 15:06:33 +01:00
Crozet Sébastien
0910e3235b Use the github versions of nalgebra and parry until they are released. 2021-02-22 14:53:47 +01:00
Crozet Sébastien
0eec28325e Fix warnings. 2021-02-22 14:20:06 +01:00
Crozet Sébastien
4c9138fd2b Some minor cleanup and joint constraint refactoring. 2021-02-22 13:58:43 +01:00
Crozet Sébastien
052a5a5fc0 Make Simd prismatic joint limit code transmit torque. 2021-02-22 13:44:38 +01:00
Crozet Sébastien
73192d41c2 Make prismatic joint limit transmit torque. 2021-02-22 13:22:15 +01:00
Crozet Sébastien
aaba6c8927 Add motors to prismatic joints. 2021-02-22 12:12:24 +01:00
Crozet Sébastien
f204a5f736 Take max motor impulse into account for the ball joint. 2021-02-22 10:15:13 +01:00
Crozet Sébastien
cc8dc13fc0 Add actuated ball and revolute joint to the 3D joint demo. 2021-02-21 17:23:24 +01:00
Crozet Sébastien
01496d43e5 Add motors to ball joints. 2021-02-21 17:15:00 +01:00
Crozet Sébastien
f5515c3973 Fix lever-arm handling in the revolute joint. 2021-02-21 17:14:43 +01:00
Crozet Sébastien
dc8ccc0c30 Make revolute joint actuation work properly even when SIMD is enabled. 2021-02-19 17:32:09 +01:00
Crozet Sébastien
e9f17f32e8 Complete the implementation of non-simd joint motor for the revolute joint. 2021-02-19 15:21:25 +01:00
Sébastien Crozet
c650bb1fef Merge pull request #114 from EmbarkStudios/split-contacts-2
Split bouncy and resting contacts (take 2)
2021-02-18 18:39:52 +01:00
Emil Ernerfeldt
5e7eedc3fd Always apply the predictive contact term, even for bouncing contacts 2021-02-18 17:58:17 +01:00
Emil Ernerfeldt
287cd46295 Remove unused restitution_velocity_threshold parameter 2021-02-18 15:41:46 +01:00
Emil Ernerfeldt
f9e3d382d2 New contacts are bouncy, old are resting
If a contact is new (previous impluse = 0), then we treat it as bouncy (respecting restitution).
If the contact is old we treat it as resting.

Exceptions for restitutions <=0 and >= 1.
2021-02-18 15:41:46 +01:00
Sébastien Crozet
9a15838ad5 Merge pull request #118 from EmbarkStudios/collider-handles-in-filter
Add ColliderHandle:s to PairFilterContext
2021-02-18 13:53:05 +01:00
Crozet Sébastien
a1ddda5077 Revolute joint constraints: properly adjust the angular impulse and torque projection. 2021-02-17 15:57:58 +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
Crozet Sébastien
4f8f8017f4 Properly writeback the generic constrainst impulse when it comes from a revolute joint. 2021-02-15 16:44:55 +01:00
Crozet Sébastien
ebd5562af3 Generic velocity constraint: split the translation and rotation terms. 2021-02-15 12:08:18 +01:00
Crozet Sébastien
de39a41faa Implement non-linear position stabilization for the generic constraint. 2021-02-15 11:20:09 +01:00