Skip to content

Commit 1db68df

Browse files
committed
Merge branch 'master' of https://github.com/photonstorm/phaser
2 parents f4cdd3c + 6ca7c9e commit 1db68df

4 files changed

Lines changed: 20 additions & 9 deletions

File tree

v3/src/gameobjects/tilemap/Tile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ var Tile = new Class({
4141
this.tint = 0xFFFFFF;
4242
},
4343

44-
// Copy everything except position
44+
// Copy everything except position & interesting faces
4545
copy: function (tile)
4646
{
4747
this.index = tile.index;

v3/src/gameobjects/tilemap/Tilemap.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,13 +189,13 @@ var Tilemap = new Class({
189189
return layer;
190190
},
191191

192-
copy: function (srcTileX, srcTileY, width, height, destTileX, destTileY, layer)
192+
copy: function (srcTileX, srcTileY, width, height, destTileX, destTileY, recalculateFaces, layer)
193193
{
194194
layer = this.getLayer(layer);
195195
if (this._isStaticCall(layer, 'copy')) { return this; }
196196
if (layer !== null)
197197
{
198-
TilemapComponents.Copy(srcTileX, srcTileY, width, height, destTileX, destTileY, layer);
198+
TilemapComponents.Copy(srcTileX, srcTileY, width, height, destTileX, destTileY, recalculateFaces, layer);
199199
}
200200
return this;
201201
},

v3/src/gameobjects/tilemap/components/Copy.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
var GetTilesWithin = require('./GetTilesWithin');
2+
var CalculateFacesWithin = require('./CalculateFacesWithin');
23

34
// Copies indices, not other properties. Does not modify collisions.
4-
var Copy = function (srcTileX, srcTileY, width, height, destTileX, destTileY, layer)
5+
var Copy = function (srcTileX, srcTileY, width, height, destTileX, destTileY, recalculateFaces, layer)
56
{
6-
if (srcTileX === undefined || srcTileX < 0) { srcTileX = 0; }
7-
if (srcTileY === undefined || srcTileY < 0) { srcTileY = 0; }
7+
if (srcTileX < 0) { srcTileX = 0; }
8+
if (srcTileY < 0) { srcTileY = 0; }
9+
if (recalculateFaces === undefined) { recalculateFaces = true; }
810

911
var srcTiles = GetTilesWithin(srcTileX, srcTileY, width, height, null, layer);
1012

@@ -17,9 +19,18 @@ var Copy = function (srcTileX, srcTileY, width, height, destTileX, destTileY, la
1719
var tileY = srcTiles[i].y + offsetY;
1820
if (tileX >= 0 && tileX < layer.width && tileY >= 0 && tileY < layer.height)
1921
{
20-
layer.data[tileY][tileX].index = srcTiles[i].index;
22+
if (layer.data[tileY][tileX])
23+
{
24+
layer.data[tileY][tileX].copy(srcTiles[i]);
25+
}
2126
}
2227
}
28+
29+
if (recalculateFaces)
30+
{
31+
// Recalculate the faces within the destination area and neighboring tiles
32+
CalculateFacesWithin(destTileX - 1, destTileY - 1, width + 2, height + 2, layer);
33+
}
2334
};
2435

2536
module.exports = Copy;

v3/src/gameobjects/tilemap/dynamiclayer/DynamicTilemapLayer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ var DynamicTilemapLayer = new Class({
6060
TilemapComponents.CullTiles(this.layer, camera, this.culledTiles);
6161
},
6262

63-
copy: function (srcTileX, srcTileY, width, height, destTileX, destTileY)
63+
copy: function (srcTileX, srcTileY, width, height, destTileX, destTileY, recalculateFaces)
6464
{
65-
TilemapComponents.Copy(srcTileX, srcTileY, width, height, destTileX, destTileY, this.layer);
65+
TilemapComponents.Copy(srcTileX, srcTileY, width, height, destTileX, destTileY, recalculateFaces, this.layer);
6666
return this;
6767
},
6868

0 commit comments

Comments
 (0)