## v0.3.0 - Collider shapes are now trait-objects instead of a `Shape` enum. - Add a user-defined `u128` to each colliders and rigid-bodies for storing user data. - Add the support for `Cylinder`, `RoundCylinder`, and `Cone` shapes. - Added the support for collision filtering based on bit masks (often known as collision groups, collision masks, or collision layers in other physics engines). Each collider has two groups. Their `collision_groups` is used for filtering what pair of colliders should have their contacts computed by the narrow-phase. Their `solver_groups` is used for filtering what pair of colliders should have their contact forces computed by the constraints solver. - Collision groups can also be used to filter what collider should be hit by a ray-cast performed by the `QueryPipeline`. - Added collision filters based on user-defined trait-objects. This adds two traits `ContactPairFilter` and `ProximityPairFilter` that allows user-defined logic for determining if two colliders/sensors are allowed to interact. - The `PhysicsPipeline::step` method now takes two additional arguments: the optional `&ContactPairFilter` and `&ProximityPairFilter` for filtering contact and proximity pairs. ## v0.2.1 - Fix panic in TriMesh construction and QueryPipeline update caused by a stack overflow or a subtraction underflow. ## v0.2.0 The most significant change on this version is the addition of the `QueryPipeline` responsible for performing scene-wide queries. So far only ray-casting has been implemented. - Add `ColliderSet::remove(...)` to remove a collider from the `ColliderSet`. - Replace `PhysicsPipeline::remove_rigid_body` by `RigidBodySet::remove`. - The `JointSet.iter()` now returns an iterator yielding `(JointHandle, &Joint)` instead of just `&Joint`. - Add `ColliderDesc::translation(...)` to set the translation of a collider relative to the rigid-body it is attached to. - Add `ColliderDesc::rotation(...)` to set the rotation of a collider relative to the rigid-body it is attached to. - Add `ColliderDesc::position(...)` to set the position of a collider relative to the rigid-body it is attached to. - Add `Collider::position_wrt_parent()` to get the position of a collider relative to the rigid-body it is attached to. - Modify `RigidBody::set_position(...)` so it also resets the next kinematic position to the same value. - Deprecate `Collider::delta()` in favor of the new `Collider::position_wrt_parent()`. - Fix multiple issues occurring when having colliders resulting in a non-zero center-of-mass. - Fix a crash happening when removing a rigid-body with a collider, stepping the simulation, adding another rigid-body with a collider, and stepping the simulation again. - Fix NaN when detection contacts between two polygonal faces where one has a normal perfectly perpendicular to the separating vector. - Fix bug collision detection between trimeshes and other shapes. The bug appeared depending on whether the trimesh collider was added before the other shape's collider or after.