/**
* @typedef CollisionPair
* @property {Body2D} a
* @property {Body2D} b
*/
/**
* @typedef Manifold
* @property {Body2D} bodyA
* @property {Body2D} bodyB
* @property {ContactManifold} contactData
* @property {number} stmp
* @property {number} impulse
* @property {boolean} persistent
* @property { Vector2} ca1
* @property { Vector2} ca2
* @property {number} restitution
* @property {number} staticFriction
* @property {number} kineticFriction
* @property { Vector2} velA
* @property { Vector2} velB
* @property {number} rotA
* @property {number} rotB
*/
/**
* @typedef ContactManifold
* @property {number} lastOverlap
* @property {number} overlap=-Infinity
* @property {boolean} done=false
* @property { Vector2} axis
* @property { Vector2[]} verticesA
* @property { Vector2[]} verticesB
* @property {Shape} vertShapeA
* @property {Shape} vertShapeB
* @property {number} contactNo
* @property {number} indexA
* @property {number} indexB
*/