All notable changes to ncollide
, starting with the version 0.8.0 will be
documented here.
This project adheres to Semantic Versioning.
Bug-fixes and dependencies updates.
* Add support for some shapes (`TriMesh` and `Polyline`) that can be deformed.
* Add full support for `Capsule` and `Heightfield`.
Bug-fixes and dependencies updates.
* This re-adds time-of-impact computation in the `query`module.
* Add `::try_from_points(...)` methods to construct a 2D `ConvexPolygon`
or an 3D `Convex` shape from a set of point. The convex hull of those
points are automatically computed.
* All the dependencies have been updated to their latest.
* The EPA algorithm in both 2D and 3D.
* Voronoï region based simplex projection algorithms for 2D and 3D (and
used for the GJK instead of the n-dimensional Johnson algorithm).
* `SupportMap::support_point_toward` that takes a direction that is already
normalized.
* The `Plane` geometry is now initialized with a `Unit` vector. Its `.normal()` method also returns a `Unit` vector.
* The `Contact<...>` structure now represents the contact normal as a `Unit<Vector<N>>` instead of just a `Vector<N>`.
* All the fields of `CollisionObject` are now private and must be accessed using methods.
* The trait Point now requires additional methods to compute the normal of
a face and to project the origin on it.
* Everything is now Send/Sync (useful for, e.g., ECS compatibility).
* Rename `RichPointQuery` -> `PointQueryWithLocation`.
* Rename `RichPointQuery::project_point_with_extra_info` -> `PointQueryWithLocation::project_point_with_location`.
* Rename `CollisionWorld::deferred_add -> CollisionWorld::add`. Now, the addition is performed immediately.
* Rename `CollisionWorld::deferred_remove -> CollisionWorld::remove`. Now, the removal is performed immediately.
* Rename `CollisionWorld::deferred_set_position -> CollisionWorld::set_position`. Now, the change of position is performed immediately.
* The interface of `BroadPhase` has been significantly altered: now the uid
allocated to each object added to the broad phase is automatically
generated by the broad phase itself.
* Rename `BroadPhase::deferred_remove -> BroadPhase::remove`. Now the
removal is performed immediately.
* The `ShapeHandle` is now a `Arc<Shape<N>>` instead of `Arc<Box<Shape<N>>>`
(this removes one allocation indirection).
* Update to nalgebra 0.12.
* Update to nalgebra 0.11.0.
* Re-export `Ray2`, `Ray3`, `RayIntersection2`, and `RayIntersection3` on
the `query` module.
* Rename `.perform_removals_and_broad_phase()` -> `.perform_additions_removals_and_broad_phase()`.
* Rename the collision world method `.add()` to `.deferred_add()`.
* The collision world `.deferred_set_position()` now fails with a
meaningful error when the user attempts to set the position of an object
not actually added (including those that have been `.deferred_add()`-ed
without a subsequent `.update()`.
* Added 2D and 3D testbeds (available on crates.io as `ncollide_testbed2d` and `ncollide_testbed3d`).
* Added a method to the narrow phase to retrieve all the proximity pairs.
* Added a method to the collision world to retrieve all the proximity pairs.
* Added a method to the collision world to retrieve the collision object
from its identifier.
* Merge the `ncollide_queries` and `ncollide_entities` crates into
`ncollide_geometry`.
* Rename the `geometry` module to `query`.
* `::implicit_shape_aabb(...)` becomes `::support_map_aabb(...)`
* `CompositeShape::aabb_at(...)` now returns an AABB by-value (instead of
by-ref).
* `PointQuery::distance_to_point(...)` now has a `solid` flag as well.
* Point queries result now indicates if the point was inside of the object
or not by returning a `PointProjection` structure instead of just the
point.
* Rename `CollisionGroups::can_collide_with` to `CollisionGroups::can_interact_with`.
* Rename `NarrowPhase::handle_proximity` to `NarrowPhase::handle_interaction`.
* Rename all `.*CollisionDetector` to `.*ContactGenerator`. Methods have
been renamed as well (e.g. `.get_collision_algorithm` becomes
`.get_contact_algorithm`, `.colls` becomes `.contacts`, etc.)
* Rename `CollisionQueryType` to `GeometricQueryType`.
* Moved the `ray` and `point` modules into the `query` module. Also, they
are renamed `ray_internal` and `point_internal`.
* Removed the `CompositeShape::len()` method.
* Added proximity queries, including persistant proximity detector and
algorithm dispatcher.
* Added methods to set directly collision group membership/whitelist/blacklist.
* The last type parameter of the `BVTCostFn` trait (the user-defined data
return by leaves) is now an associated type.
* The shape handles `Arc<Box<Repr<N>>>` are now wrapped into a structure
with a more explicit name: `ShapeHandle<N>`.
* Renamed `Convex` to `ConvexHull`
* Swapped the first two arguments of `CompositeShape::map_transformed_part_at`.
* All fields of `Polyline` are now private. Added corresponding accessors.