diff --git a/src/level/TMXLayer.js b/src/level/TMXLayer.js index 6e584c44e9..5bc11ec2e5 100644 --- a/src/level/TMXLayer.js +++ b/src/level/TMXLayer.js @@ -378,8 +378,20 @@ this.tilesets = tilesets; // the default tileset + // XXX: Is this even used? this.tileset = (this.tilesets ? this.tilesets.getTilesetByIndex(0) : null); + // Biggest tile size to draw + this.maxTileSize = { + "width" : 0, + "height" : 0 + }; + for (var i = 0; i < this.tilesets.length; i++) { + var tileset = this.tilesets.getTilesetByIndex(i); + this.maxTileSize.width = Math.max(this.maxTileSize.width, tileset.tilewidth); + this.maxTileSize.height = Math.max(this.maxTileSize.height, tileset.tileheight); + } + /** * All animated tilesets in this layer * @private diff --git a/src/level/TMXRenderer.js b/src/level/TMXRenderer.js index 269146e69d..0d015efdf2 100644 --- a/src/level/TMXRenderer.js +++ b/src/level/TMXRenderer.js @@ -148,8 +148,8 @@ drawTileLayer : function (renderer, layer, rect) { // get top-left and bottom-right tile position var start = this.pixelToTileCoords( - rect.pos.x, - rect.pos.y, + Math.max(rect.pos.x - (layer.maxTileSize.width - layer.tilewidth), 0), + Math.max(rect.pos.y - (layer.maxTileSize.height - layer.tileheight), 0), me.pool.pull("me.Vector2d") ).floorSelf(); diff --git a/src/level/TMXTileset.js b/src/level/TMXTileset.js index 7f4903b74e..3ac1949c40 100755 --- a/src/level/TMXTileset.js +++ b/src/level/TMXTileset.js @@ -234,11 +234,13 @@ // constructor init: function () { this.tilesets = []; + this.length = 0; }, //add a tileset to the tileset group add : function (tileset) { this.tilesets.push(tileset); + this.length++; }, //return the tileset at the specified index @@ -260,7 +262,7 @@ // clear the gid of all flip/rotation flags gid &= TMX_CLEAR_BIT_MASK; - + // cycle through all tilesets for (var i = 0, len = this.tilesets.length; i < len; i++) { // return the corresponding tileset if matching