Skip to content

Commit e0ae756

Browse files
committed
Add the new collision events plugin.
1 parent ca293d7 commit e0ae756

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
var Matter = require('../../CustomMain');
2+
3+
var MatterCollisionEvents = {
4+
name: 'matter-collision-events',
5+
version: '0.1.5',
6+
for: 'matter-js@^0.14.2',
7+
silent: true, // no console log please
8+
9+
install: function(matter) {
10+
// add the onCollide, onCollideEnd, and onCollideActive callback handlers
11+
// to the native Matter.Body created
12+
var create = matter.Body.create;
13+
matter.Body.create = function() {
14+
var body = create.apply(null, arguments);
15+
body.onCollide = function(cb) { body._mceOC = cb; }
16+
body.onCollideEnd = function(cb) { body._mceOCE = cb; }
17+
body.onCollideActive = function(cb) { body._mceOCA = cb; }
18+
return body;
19+
}
20+
matter.after('Engine.create', function() {
21+
matter.Events.on(this, 'collisionStart', function(event) {
22+
event.pairs.map(function(pair) {
23+
matter.Events.trigger(pair.bodyA, 'onCollide', { pair : pair });
24+
matter.Events.trigger(pair.bodyB, 'onCollide', { pair : pair });
25+
pair.bodyA._mceOC &&
26+
pair.bodyA._mceOC(pair)
27+
pair.bodyB._mceOC &&
28+
pair.bodyB._mceOC(pair)
29+
});
30+
});
31+
32+
matter.Events.on(this, 'collisionActive', function(event) {
33+
event.pairs.map(function(pair) {
34+
matter.Events.trigger(
35+
pair.bodyA,
36+
'onCollideActive',
37+
{ pair: pair }
38+
);
39+
matter.Events.trigger(
40+
pair.bodyB,
41+
'onCollideActive',
42+
{ pair: pair }
43+
);
44+
pair.bodyA._mceOCA &&
45+
pair.bodyA._mceOCA(pair)
46+
pair.bodyB._mceOCA &&
47+
pair.bodyB._mceOCA(pair)
48+
});
49+
});
50+
51+
matter.Events.on(this, 'collisionEnd', function(event) {
52+
event.pairs.map(function(pair) {
53+
matter.Events.trigger(pair.bodyA, 'onCollideEnd', { pair : pair });
54+
matter.Events.trigger(pair.bodyB, 'onCollideEnd', { pair : pair });
55+
pair.bodyA._mceOCE &&
56+
pair.bodyA._mceOCE(pair)
57+
pair.bodyB._mceOCE &&
58+
pair.bodyB._mceOCE(pair)
59+
});
60+
});
61+
});
62+
}
63+
};
64+
65+
module.exports = MatterCollisionEvents;

0 commit comments

Comments
 (0)