Skip to content

Commit 0543486

Browse files
committed
Added Matter collision events
1 parent 7609eb3 commit 0543486

6 files changed

Lines changed: 125 additions & 56 deletions

File tree

v3/src/physics/matter-js/World.js

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
var Bodies = require('./lib/factory/Bodies');
44
var Class = require('../../utils/Class');
55
var Engine = require('./lib/core/Engine');
6-
var GetValue = require('../../utils/object/GetValue');
6+
var EventDispatcher = require('../../events/EventDispatcher');
77
var GetFastValue = require('../../utils/object/GetFastValue');
8+
var GetValue = require('../../utils/object/GetValue');
9+
var MatterBody = require('./lib/body/Body');
10+
var MatterEvents = require('./lib/core/Events');
811
var MatterWorld = require('./lib/body/World');
12+
var PhysicsEvent = require('./events/');
913

1014
var World = new Class({
1115

@@ -19,8 +23,7 @@ var World = new Class({
1923

2024
this.localWorld = this.engine.world;
2125

22-
// Map to World events
23-
this.events = scene.sys.events;
26+
this.events = new EventDispatcher();
2427

2528
var gravity = GetValue(config, 'gravity', null);
2629

@@ -57,6 +60,31 @@ var World = new Class({
5760
this.setBounds(x, y, width, height, thickness, left, right, top, bottom);
5861
}
5962
}
63+
64+
this.setEventsProxy();
65+
},
66+
67+
setEventsProxy: function ()
68+
{
69+
var localEvents = this.events;
70+
71+
MatterEvents.on(this.engine, 'collisionStart', function (event) {
72+
73+
localEvents.dispatch(new PhysicsEvent.COLLISION_START(event.pairs));
74+
75+
});
76+
77+
MatterEvents.on(this.engine, 'collisionActive', function (event) {
78+
79+
localEvents.dispatch(new PhysicsEvent.COLLISION_ACTIVE(event));
80+
81+
});
82+
83+
MatterEvents.on(this.engine, 'collisionEnd', function (event) {
84+
85+
localEvents.dispatch(new PhysicsEvent.COLLISION_END(event));
86+
87+
});
6088
},
6189

6290
/**
@@ -156,6 +184,16 @@ var World = new Class({
156184
return this;
157185
},
158186

187+
nextGroup: function (isNonColliding)
188+
{
189+
return Body.nextGroup(isNonColliding);
190+
},
191+
192+
nextCategory: function ()
193+
{
194+
return MatterBody.nextCategory();
195+
},
196+
159197
update: function (time, delta)
160198
{
161199
var correction = 1;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
var Class = require('../../../utils/Class');
2+
var Event = require('../../../events/Event');
3+
4+
var CollisionActiveEvent = new Class({
5+
6+
Extends: Event,
7+
8+
initialize:
9+
10+
function CollisionActiveEvent (pairs)
11+
{
12+
Event.call(this, 'COLLISION_ACTIVE_EVENT');
13+
14+
this.pairs = pairs;
15+
16+
if (pairs.length === 1)
17+
{
18+
this.bodyA = pairs[0].bodyA;
19+
this.bodyB = pairs[0].bodyB;
20+
}
21+
}
22+
23+
});
24+
25+
module.exports = CollisionActiveEvent;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
var Class = require('../../../utils/Class');
2+
var Event = require('../../../events/Event');
3+
4+
var CollisionEndEvent = new Class({
5+
6+
Extends: Event,
7+
8+
initialize:
9+
10+
function CollisionEndEvent (pairs)
11+
{
12+
Event.call(this, 'COLLISION_END_EVENT');
13+
14+
this.pairs = pairs;
15+
16+
if (pairs.length === 1)
17+
{
18+
this.bodyA = pairs[0].bodyA;
19+
this.bodyB = pairs[0].bodyB;
20+
}
21+
}
22+
23+
});
24+
25+
module.exports = CollisionEndEvent;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
var Class = require('../../../utils/Class');
2+
var Event = require('../../../events/Event');
3+
4+
var CollisionStartEvent = new Class({
5+
6+
Extends: Event,
7+
8+
initialize:
9+
10+
function CollisionStartEvent (pairs)
11+
{
12+
Event.call(this, 'COLLISION_START_EVENT');
13+
14+
this.pairs = pairs;
15+
16+
if (pairs.length === 1)
17+
{
18+
this.bodyA = pairs[0].bodyA;
19+
this.bodyB = pairs[0].bodyB;
20+
}
21+
}
22+
23+
});
24+
25+
module.exports = CollisionStartEvent;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Phaser.Physics.Matter.Events
2+
3+
module.exports = {
4+
5+
COLLISION_ACTIVE: require('./CollisionActiveEvent'),
6+
COLLISION_END: require('./CollisionEndEvent'),
7+
COLLISION_START: require('./CollisionStartEvent')
8+
9+
};

v3/src/physics/matter-js/index.js

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,57 +2,4 @@
22

33
var Matter = require('./lib/module/main');
44

5-
// Add Phaser specific helpers to the Matter global
6-
7-
// Matter.Phaser.
8-
95
module.exports = Matter;
10-
11-
/*
12-
module.exports = {
13-
14-
Body: require('./Body'),
15-
Factory: require('./Factory'),
16-
// Group: require('./PhysicsGroup'),
17-
// Image: require('./MatterImage'),
18-
// Sprite: require('./MatterSprite'),
19-
World: require('./World'),
20-
21-
Global: {
22-
23-
Body: require('./body/Body'),
24-
Composite: require('./body/Composite'),
25-
World: require('./body/World'),
26-
27-
Contact: require('./collision/Contact'),
28-
Detector: require('./collision/Detector'),
29-
Grid: require('./collision/Grid'),
30-
Pairs: require('./collision/Pairs'),
31-
Pair: require('./collision/Pair'),
32-
Query: require('./collision/Query'),
33-
Resolver: require('./collision/Resolver'),
34-
SAT: require('./collision/SAT'),
35-
36-
Constraint: require('./constraint/Constraint'),
37-
MouseConstraint: require('./constraint/MouseConstraint'),
38-
39-
Common: require('./core/Common'),
40-
Engine: require('./core/Engine'),
41-
Events: require('./core/Events'),
42-
Mouse: require('./core/Mouse'),
43-
Sleeping: require('./core/Sleeping'),
44-
Plugin: require('./core/Plugin'),
45-
46-
Bodies: require('./factory/Bodies'),
47-
Composites: require('./factory/Composites'),
48-
49-
Axes: require('./geometry/Axes'),
50-
Bounds: require('./geometry/Bounds'),
51-
Svg: require('./geometry/Svg'),
52-
Vector: require('./geometry/Vector'),
53-
Vertices: require('./geometry/Vertices')
54-
55-
}
56-
57-
};
58-
*/

0 commit comments

Comments
 (0)