Skip to content

Commit 557ac4f

Browse files
committed
Add GetTilesWithinWorldXY method to tilemap and layers
1 parent 432c1c0 commit 557ac4f

5 files changed

Lines changed: 38 additions & 0 deletions

File tree

v3/src/gameobjects/tilemap/Tilemap.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,13 @@ var Tilemap = new Class({
310310
return TilemapComponents.GetTilesWithin(tileX, tileY, width, height, layer);
311311
},
312312

313+
getTilesWithinWorldXY: function (worldX, worldY, width, height, camera, layer)
314+
{
315+
layer = this.getLayer(layer);
316+
if (layer === null) { return null; }
317+
return TilemapComponents.GetTilesWithinWorldXY(worldX, worldY, width, height, camera, layer);
318+
},
319+
313320
getTilesetIndex: function (name)
314321
{
315322
return this.getIndex(this.tilesets, name);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var GetTilesWithin = require('./GetTilesWithin');
2+
var WorldToTileX = require('./WorldToTileX');
3+
var WorldToTileY = require('./WorldToTileY');
4+
5+
// TODO: add options for filtering by empty, collides, interestingFace
6+
// { isNotEmpty, isColliding, hasInterestingFace }
7+
var GetTilesWithinWorldXY = function (worldX, worldY, width, height, camera, layer)
8+
{
9+
// Top left corner of the rect, rounded down to include partial tiles
10+
var xStart = WorldToTileX(worldX, true, camera, layer);
11+
var yStart = WorldToTileY(worldY, true, camera, layer);
12+
13+
// Bottom right corner of the rect, rounded up to include partial tiles
14+
var xEnd = Math.ceil(WorldToTileX(worldX + width, false, camera, layer));
15+
var yEnd = Math.ceil(WorldToTileY(worldY + height, false, camera, layer));
16+
17+
return GetTilesWithin(xStart, yStart, xEnd - xStart, yEnd - yStart, layer);
18+
};
19+
20+
module.exports = GetTilesWithinWorldXY;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module.exports = {
88
GetTileAt: require('./GetTileAt'),
99
GetTileAtWorldXY: require('./GetTileAtWorldXY'),
1010
GetTilesWithin: require('./GetTilesWithin'),
11+
GetTilesWithinWorldXY: require('./GetTilesWithinWorldXY'),
1112
HasTileAt: require('./HasTileAt'),
1213
HasTileAtWorldXY: require('./HasTileAtWorldXY'),
1314
IsInLayerBounds: require('./IsInLayerBounds'),

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,11 @@ var DynamicTilemapLayer = new Class({
108108
return TilemapComponents.GetTilesWithin(tileX, tileY, width, height, this.layer);
109109
},
110110

111+
getTilesWithinWorldXY: function (worldX, worldY, width, height, camera)
112+
{
113+
return TilemapComponents.GetTilesWithinWorldXY(worldX, worldY, width, height, camera, this.layer);
114+
},
115+
111116
hasTileAt: function (tileX, tileY)
112117
{
113118
return TilemapComponents.HasTileAt(tileX, tileY, this.layer);

v3/src/gameobjects/tilemap/staticlayer/StaticTilemapLayer.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,11 @@ var StaticTilemapLayer = new Class({
249249
return TilemapComponents.GetTilesWithin(tileX, tileY, width, height, this.layer);
250250
},
251251

252+
getTilesWithinWorldXY: function (worldX, worldY, width, height, camera)
253+
{
254+
return TilemapComponents.GetTilesWithinWorldXY(worldX, worldY, width, height, camera, this.layer);
255+
},
256+
252257
hasTileAt: function (tileX, tileY)
253258
{
254259
return TilemapComponents.HasTileAt(tileX, tileY, this.layer);

0 commit comments

Comments
 (0)