by Tuur Dutoit

What is Crash?

Simply put, Crash bundles and optimizes some other modules, in order to make 2D collisions as easy and efficient as possible. I won’t go into too much detail here, because the docs are way better at that.

How does it work?

Crash exposes a base Collider class and some subclasses, one for each shape (Circle, Polygon, Box and Point). When a collider is added to Crash, it is inserted into a RBush, which will help speed up collision checks.

Every time you want to check for collisions, you call Crash.check(). This will run through all Colliders that moved since the last call (Colliders track this automatically), gets possible collisions from RBush and uses SAT to handle the fine-grained checks.

To respond to collisions, a listener should be added using Crash.onCollision(listener). The listener then gets some info for every collision and can react to that whatever way it wants.

Crash is small: only 6kB minified; with RBush and SAT included, the total rises to a mere 18kB
By combining multiple optimization techniques, Crash is also very fast and efficient.

The latest version, 2.0.0, is stable by now, so try it out!