test an aabb against other aabbs
npm install collide-2d-aabb-aabb> Determines whether a moving axis-aligned bounding box (AABB) collides with
> other AABBs.
collide-2d-aabb-aabb provides methods for testing against either a single AABB
or a set of them in 2D space.
```
$ npm install collide-2d-aabb-aabb
`javascript
var collideSingle = require('collide-2d-aabb-aabb').single
var player = [0, 0, 16, 16]
var motion = [5, 5]
var crate = [18, 1, 32, 32]
var offset = collideSingle(player, motion, crate)
console.log(offset)
`
outputs
``
[2, 5]
`javascript
var collideSet = require('collide-2d-aabb-aabb').set
var player = [0, 0, 16, 16]
var motion = [5, 5]
var crates = [
[18, 1, 32, 32]
[7, 19, 32, 32]
]
function getCrate (cb) {
cb(crates[0])
cb(crates[1])
cb(null)
}
var offset = collideSet(player, motion, getCrate, onCollide)
console.log(offset)
function onCollide (box, axis, dir) {
console.log(box, axis, dir)
}
`
outputs
``
[18, 1, 32, 32], 0, 1
[7, 19, 32, 32], 1, 1
[2, 3]
Detection and correction is applied on each X and Y axis separately, resulting
in 0-2 calls to onCollide.
`javascript`
var single = require('collide-2d-aabb-aabb').single
var set = require('collide-2d-aabb-aabb').set
Attempt to advance aabb by moveDelta against the impeding aabb2.
Non-destructive.
If there is no collision, offset == moveDelta. Otherwise, it will be shorter
in one or both axes.
aabb and aabb2 are assumed to be a size 4 array of the form [x, y, width,
height].
moveDelta is assumed to be a gl-matrix-style vec2 or array [x, y].
Attempt to advance aabb by moveDelta against the set of impeding AABBsgetAabb
provided by the function. Non-destructive.
getAabb is assumed to be a function with a single parameter, cb, which is[x, y, width, height]
called to give size 4 arrays (of the form ) to checkcb(null)
collisions against. You must call to indicate getAabb is
finished providing values.
If there is no collision, offset == moveDelta. Otherwise, it will be shorter
in one or both axes.
aabb is assumed to be a size 4 array of the form [x, y, width, height].
moveDelta is assumed to be a gl-matrix-style vec2 or array [x, y].
onCollide is a callback function, taking the following arguments:
* aabb: the size 4 array that the collision took place against. Will be === togetAabb
the array provided by .moveAxis
* : an integer representing the axis of movement. 0 (X) or 1 (Y).moveDir`: either -1 or 1, denoting the direction of the movement.
*
MIT