- No actual API change, but updated to Rust2018 and synced with cgmath 0.17
- Uses the latest versions of rand and approx for compatibility with other libraries
- Updated version of num library to 0.2
- Minor refactoring of code based on clippy comments (no change to api)
- Updated documentation for Variance type in SweepAndPrune.
- Update GJK intersection tests to use
smallvec
for theSimplex
, since it will never grow larger than 4 entries. Small breaking change in the signature for theGJK::intersect
function. - Reimplement GJK time of impact tests, so they actually work for all scenarios.
- Add primitives for Cube and Square, with an extra invariant that all sides need to be equal.
- Rename feature
eders
toserde
- Update dependencies
- Add Default implementation for DynamicBoundingVolumeTree
- Add Quad primitive for 3D
- Add Line primitive for 2D
- Fix: Sphere discrete intersection test compared squared radii with non-squared combined radii
- Expose tolerance settings on GJK/EPA (BREAKING CHANGE: Changed generic type parameters on GJK)
- Fix: Expose dimensions of Rectangle/Cuboid
- Fix: Complex time of impact would ignore later primitive pairs if one pair did not collide
- Upgrade to cgmath 0.16
- Fix: Exactly overlapping identical shapes caused degeneracy in GJK.
- Fix: Aabb Point containment overflowed for unsigned BaseNum.
- Added external access to faces in ConvexPolyhedron.
- Added new collision primitives:
- Cylinder (3D)
- Capsule (3D)
- Make it possible to be abstract over bounding volumes
- Removed the SupportFunction trait, incorporating into the Primitive trait
- Renamed the Bound trait to PlaneBound
- Added TreeValueWrapped, a utility type for use with the DBVT
- New dynamic bounding volume tree for use with spatial querying etc
- Added collision primitives:
- Particle (2D/3D)
- Rectangle (2D)
- Circle (2D)
- ConvexPolygon (2D)
- Cuboid (3D)
- Sphere (3D)
- ConvexPolyhedron (3D)
- Added wrappers for collision primitives
- Primitive2 (2D)
- Primitive3 (3D)
- Added support functions and bounding volume handling for all primitives
- Added ray intersection testing for all primitives, both without and with object-to-world transformations
- Added collision detection algorithms for broad phase collision detection:
- Brute force (compare all bounding volume pairs)
- Sweep and Prune (sorts volumes along a sweep axis, and compares bounding volumes where there is an overlap in that axis)
- Added algorithms that use GJK (Gilbert-Johnson-Keerthi) algorithm, and also EPA (Expanding Polytope Algorithm) for
additional contact data:
- Convex primitive intersection testing
- Convex primitive distance computation
- Convex primitive time of impact intersection testing
- Basic support for composite primitives
- Reorganised code tree
- Added unit tests and benchmarks