Skip to content

Commit bf413ea

Browse files
committed
Implemented tile & layer callbacks in arcade physics
1 parent ef58640 commit bf413ea

2 files changed

Lines changed: 14 additions & 16 deletions

File tree

src/physics/arcade/inc/CollideSpriteVsTilemapLayer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var CollideSpriteVsTilemapLayer = function (sprite, tilemapLayer, collideCallbac
3434

3535
if (TileIntersectsBody(tileWorldRect, body)
3636
&& (!processCallback || processCallback.call(callbackContext, sprite, tile))
37-
&& ProcessTileCallbacks(tile)
37+
&& ProcessTileCallbacks(tile, sprite)
3838
&& (overlapOnly || SeparateTile(i, body, tile, tileWorldRect, tilemapLayer, this.TILE_BIAS)))
3939
{
4040
this._total++;
Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
var ProcessTileCallbacks = function (tile)
1+
var ProcessTileCallbacks = function (tile, sprite)
22
{
3-
return true;
3+
// Tile callbacks take priority over layer level callbacks
4+
if (tile.collisionCallback)
5+
{
6+
return !tile.collisionCallback.call(tile.collisionCallbackContext, sprite, tile);
7+
}
8+
else if (tile.layer.callbacks[tile.index])
9+
{
10+
return !tile.layer.callbacks[tile.index].callback.call(
11+
tile.layer.callbacks[tile.index].callbackContext, sprite, tile
12+
);
13+
}
414

5-
// TODO: port v2
6-
// // Tilemap & tile callbacks take priority
7-
// // A local callback always takes priority over a layer level callback
8-
// if (tile.collisionCallback && !tile.collisionCallback.call(tile.collisionCallbackContext, body.sprite, tile))
9-
// {
10-
// // If it returns true then we can carry on, otherwise we should abort.
11-
// return false;
12-
// }
13-
// else if (typeof tile.layer.callbacks !== 'undefined' && tile.layer.callbacks[tile.index] && !tile.layer.callbacks[tile.index].callback.call(tile.layer.callbacks[tile.index].callbackContext, body.sprite, tile))
14-
// {
15-
// // If it returns true then we can carry on, otherwise we should abort.
16-
// return false;
17-
// }
15+
return true;
1816
};
1917

2018
module.exports = ProcessTileCallbacks;

0 commit comments

Comments
 (0)