Skip to content

Commit f050b14

Browse files
committed
Rewrote plugin to tidy it up.
1 parent 0088345 commit f050b14

1 file changed

Lines changed: 109 additions & 58 deletions

File tree

Lines changed: 109 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,116 @@
1-
var Matter = require('../../CustomMain');
1+
/**
2+
* @author @dxu https://github.com/dxu/matter-collision-events
3+
* @author Richard Davey <rich@photonstorm.com>
4+
* @license {@link https://opensource.org/licenses/MIT|MIT License}
5+
*/
26

37
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)
8+
9+
name: 'matter-collision-events',
10+
version: '0.1.6',
11+
for: 'matter-js@^0.14.2',
12+
silent: true,
13+
14+
install: function (matter)
15+
{
16+
matter.after('Body.create', function (body)
17+
{
18+
body.onCollideCallback;
19+
body.onCollideEndCallback;
20+
body.onCollideActiveCallback;
21+
22+
body.setOnCollide = function (callback)
23+
{
24+
this.onCollideCallback = callback;
25+
26+
return this;
27+
}
28+
29+
body.setOnCollideEnd = function (callback)
30+
{
31+
this.onCollideEndCallback = callback;
32+
33+
return this;
34+
}
35+
36+
body.setOnCollideActive = function (callback)
37+
{
38+
this.onCollideActiveCallback = callback;
39+
40+
return this;
41+
}
4842
});
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)
43+
44+
matter.after('Engine.create', function ()
45+
{
46+
matter.Events.on(this, 'collisionStart', function (event)
47+
{
48+
event.pairs.map(function (pair)
49+
{
50+
var bodyA = pair.bodyA;
51+
var bodyB = pair.bodyB;
52+
53+
matter.Events.trigger(bodyA, 'onCollide', { pair: pair });
54+
matter.Events.trigger(bodyB, 'onCollide', { pair: pair });
55+
56+
if (bodyA.onCollideCallback)
57+
{
58+
bodyA.onCollideCallback(pair);
59+
}
60+
61+
if (bodyB.onCollideCallback)
62+
{
63+
bodyB.onCollideCallback(pair);
64+
}
65+
});
66+
});
67+
68+
matter.Events.on(this, 'collisionActive', function (event)
69+
{
70+
event.pairs.map(function (pair)
71+
{
72+
var bodyA = pair.bodyA;
73+
var bodyB = pair.bodyB;
74+
75+
matter.Events.trigger(bodyA, 'onCollideActive', { pair: pair });
76+
matter.Events.trigger(bodyB, 'onCollideActive', { pair: pair });
77+
78+
79+
if (bodyA.onCollideActiveCallback)
80+
{
81+
bodyA.onCollideActiveCallback(pair);
82+
}
83+
84+
if (bodyB.onCollideActiveCallback)
85+
{
86+
bodyB.onCollideActiveCallback(pair);
87+
}
88+
});
89+
});
90+
91+
matter.Events.on(this, 'collisionEnd', function (event)
92+
{
93+
event.pairs.map(function (pair)
94+
{
95+
var bodyA = pair.bodyA;
96+
var bodyB = pair.bodyB;
97+
98+
matter.Events.trigger(bodyA, 'onCollideEnd', { pair: pair });
99+
matter.Events.trigger(bodyB, 'onCollideEnd', { pair: pair });
100+
101+
if (bodyA.onCollideEndCallback)
102+
{
103+
bodyA.onCollideEndCallback(pair);
104+
}
105+
106+
if (bodyB.onCollideEndCallback)
107+
{
108+
bodyB.onCollideEndCallback(pair);
109+
}
110+
});
111+
});
59112
});
60-
});
61-
});
62-
}
113+
}
63114
};
64115

65116
module.exports = MatterCollisionEvents;

0 commit comments

Comments
 (0)