All notable changes to this project will be documented in this file, following the format defined at keepachangelog.com. This project adheres to Semantic Versioning.
- Fix bug
RigidBodyVec
that incorrectly calculated the inertia tensor.
-
Implemented
Inertia
forOBB
. -
This version dramatically changes the way moment of inertia tensors are calculated, and is therefore a breaking change. In order to make it easier to sum inertia tensors in compound objects, the outerproduct of the displacement of an object is now taken into account when calculating the tensor. Therefore, the moment of inertia tensor will vary depending on the center of an object. In order to get the tensor as produced before, set the position of an object to the origin.
- Add serialization support for
Mesh
,Pool
, andBVH
.
- Add serialization support for geom objects.
- Fix bug in
Convex
implementation forCapsule
. - Fix bug in
new
method forCapsule
.
- Implemented
Convex
forCapsule
. I have no idea if this is correct at all, hopefully will add some unit tests soon. - Update cgmath version to 0.17.
Discrete collision detection has been added, although at the moment it is limited to convex object collisions. That means stationary objects that only implement convex cannot collide with certain primitives, such as triangles and planes.
- Added a type parameter to
Convex
in order to allow for points that include extra information. - Added
SupportPoint
for storing local support points during GJK. - Added
rotate_around
method to traitParticle
. - Added
OBB
object to represent abitrarily oriented bounding boxes. - Expanded
Simplex
to take a type parameter indicating the desired point type. - Added
new
support functions to geometries. - Fixed a major bug in the
Triangle
implementation ofclosest_point
. - Added convenience methods to
Pool
.
A lot of work went into adding support for discrete collision detection. It is not feature complete and not very well tested but the basic algorithm works fine.
For now, only separation can be queried (and thus if two objects are penetrating). In the future contact generation will be added.
- Added
Penetrates
trait to query the separation between two shapes. - Added
Convex
trait to query the support function of a shape. - Added
MinkowskiDiff
object to construct the Minkowski difference of two shapes. - Added
Simplex
struct to facilitate in GJK
Although there have been breaking changes between minor versions in the past, not having a clear definition of how to use version numbers was a detriment. Thus, because there are breakind changes between this version and the last, version 1.0.0 marks (among other things) the first time we took semantic versioning seriously.
- Added
RigidBodyVec
and associatedRigidBodyRef
as a faster way to contain and update rigid bodies. - Added
RigidBodyInfo
as a more data-driven alternative toPhysicsObject
- Added
ConstrainedSet
trait as a way to look up and set constraint variables safely. - Added
Constraint
trait as a generic constraint type. - Added
Solver
as a generic constraint solver. - Added
ComponentConstructor
as a way to dynamically createComponents
at runtime.
ContactConstraint
has been modified to fit the greater constraint solver API changes.Mesh
now satisfiesVolumetric
and thus can be rotated.Mesh
no longer contains per-vertex normal because it was misleading for it to contain information it didn't use in collisions.Volumetric
trait methods now take a borrowed self instead of a self reference to allow forMesh
to propely implement rotation.- Renamed
ContactSolverParams
toContactConstraintParams
. - Renamed
DefaultContactSolverParams
toDefaultContactConstraintParams
.
SimpleDynamicBody
CompoundDynamicBody
StaticBody
PhysicsObject
Vertex
ContactSolver