Skip to content

Commit 4a6b208

Browse files
committed
Fixed internal callback handlers
1 parent 8a22bae commit 4a6b208

3 files changed

Lines changed: 33 additions & 14 deletions

File tree

src/gameobjects/group/Group.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ var Group = new Class({
223223
* @private
224224
* @since 3.22.0
225225
*/
226-
this.internalCreateCallback = null;
226+
this.internalCreateCallback = GetFastValue(config, 'internalCreateCallback', null);
227227

228228
/**
229229
* A function to be called when removing group members.
@@ -234,7 +234,7 @@ var Group = new Class({
234234
* @private
235235
* @since 3.22.0
236236
*/
237-
this.internalRemoveCallback = null;
237+
this.internalRemoveCallback = GetFastValue(config, 'internalRemoveCallback', null);
238238

239239
if (config)
240240
{

src/physics/arcade/PhysicsGroup.js

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,42 @@ var PhysicsGroup = new Class({
3838

3939
function PhysicsGroup (world, scene, children, config)
4040
{
41-
if (IsPlainObject(children))
41+
if (!children && !config)
42+
{
43+
config = {
44+
internalCreateCallback: this.createCallbackHandler,
45+
internalRemoveCallback: this.removeCallbackHandler
46+
};
47+
}
48+
else if (IsPlainObject(children))
4249
{
4350
// children is a plain object, so swizzle them:
4451
config = children;
4552
children = null;
53+
54+
config.internalCreateCallback = this.createCallbackHandler;
55+
config.internalRemoveCallback = this.removeCallbackHandler;
4656
}
4757
else if (Array.isArray(children) && IsPlainObject(children[0]))
4858
{
4959
// children is an array of plain objects
5060
config = children[0];
61+
62+
var _this = this;
63+
64+
children.forEach(function (singleConfig)
65+
{
66+
singleConfig.internalCreateCallback = _this.createCallbackHandler;
67+
singleConfig.internalRemoveCallback = _this.removeCallbackHandler;
68+
});
5169
}
52-
else if (config === undefined || children === undefined)
70+
else
5371
{
54-
config = {};
72+
// config is not defined and children is not a plain object nor an array of plain objects
73+
config = {
74+
internalCreateCallback: this.createCallbackHandler,
75+
internalRemoveCallback: this.removeCallbackHandler
76+
};
5577
}
5678

5779
/**
@@ -125,9 +147,6 @@ var PhysicsGroup = new Class({
125147

126148
Group.call(this, scene, children, config);
127149

128-
this.internalCreateCallback = this.createCallbackHandler;
129-
this.internalRemoveCallback = this.removeCallbackHandler;
130-
131150
/**
132151
* A textual representation of this Game Object.
133152
* Used internally by Phaser but is available for your own custom classes to populate.

src/physics/arcade/StaticPhysicsGroup.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ var StaticPhysicsGroup = new Class({
4141
if (!children && !config)
4242
{
4343
config = {
44-
createCallback: this.createCallbackHandler,
45-
removeCallback: this.removeCallbackHandler,
44+
internalCreateCallback: this.createCallbackHandler,
45+
internalRemoveCallback: this.removeCallbackHandler,
4646
createMultipleCallback: this.createMultipleCallbackHandler,
4747
classType: ArcadeSprite
4848
};
@@ -53,8 +53,8 @@ var StaticPhysicsGroup = new Class({
5353
config = children;
5454
children = null;
5555

56-
config.createCallback = this.createCallbackHandler;
57-
config.removeCallback = this.removeCallbackHandler;
56+
config.internalCreateCallback = this.createCallbackHandler;
57+
config.internalRemoveCallback = this.removeCallbackHandler;
5858
config.createMultipleCallback = this.createMultipleCallbackHandler;
5959
config.classType = GetFastValue(config, 'classType', ArcadeSprite);
6060
}
@@ -66,8 +66,8 @@ var StaticPhysicsGroup = new Class({
6666

6767
config.forEach(function (singleConfig)
6868
{
69-
singleConfig.createCallback = this.createCallbackHandler;
70-
singleConfig.removeCallback = this.removeCallbackHandler;
69+
singleConfig.internalCreateCallback = this.createCallbackHandler;
70+
singleConfig.internalRemoveCallback = this.removeCallbackHandler;
7171
singleConfig.createMultipleCallback = this.createMultipleCallbackHandler;
7272
singleConfig.classType = GetFastValue(singleConfig, 'classType', ArcadeSprite);
7373
});

0 commit comments

Comments
 (0)