Skip to content

Commit ae4c45f

Browse files
committed
Fixed renderer so it draws multi tileset isometric tiles properly
1 parent f00bb44 commit ae4c45f

1 file changed

Lines changed: 42 additions & 55 deletions

File tree

src/tilemaps/dynamiclayer/DynamicTilemapLayerWebGLRenderer.js

Lines changed: 42 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -46,66 +46,53 @@ var DynamicTilemapLayerWebGLRenderer = function (renderer, src, camera)
4646
var sx = src.scaleX;
4747
var sy = src.scaleY;
4848

49-
var tilesets = src.tileset;
50-
51-
// Loop through each tileset in this layer, drawing just the tiles that are in that set each time
52-
// Doing it this way around allows us to batch tiles using the same tileset
53-
for (var c = 0; c < tilesets.length; c++)
49+
for (var i = 0; i < tileCount; i++)
5450
{
55-
var currentSet = tilesets[c];
56-
var texture = currentSet.glTexture;
51+
var tile = renderTiles[i];
52+
53+
var tileset = gidMap[tile.index];
54+
55+
var texture = tileset.glTexture;
56+
5757
var textureUnit = pipeline.setTexture2D(texture, src);
5858

59-
for (var i = 0; i < tileCount; i++)
59+
var tileTexCoords = tileset.getTileTextureCoordinates(tile.index);
60+
61+
if (tileTexCoords === null)
6062
{
61-
var tile = renderTiles[i];
62-
63-
var tileset = gidMap[tile.index];
64-
65-
if (tileset !== currentSet)
66-
{
67-
// Skip tiles that aren't in this set
68-
continue;
69-
}
70-
71-
var tileTexCoords = tileset.getTileTextureCoordinates(tile.index);
72-
73-
if (tileTexCoords === null)
74-
{
75-
continue;
76-
}
77-
78-
var frameWidth = tileset.tileWidth;
79-
var frameHeight = tileset.tileHeight;
80-
81-
var frameX = tileTexCoords.x;
82-
var frameY = tileTexCoords.y;
83-
84-
var tw = tileset.tileWidth * 0.5;
85-
var th = tileset.tileHeight * 0.5;
86-
87-
var tint = getTint(tile.tint, alpha * tile.alpha);
88-
89-
pipeline.batchTexture(
90-
src,
91-
texture,
92-
texture.width, texture.height,
93-
x + ((tw + tile.pixelX) * sx), y + ((th + tile.pixelY) * sy),
94-
tile.width, tile.height,
95-
sx, sy,
96-
tile.rotation,
97-
tile.flipX, tile.flipY,
98-
scrollFactorX, scrollFactorY,
99-
tw, th,
100-
frameX, frameY, frameWidth, frameHeight,
101-
tint, tint, tint, tint, false,
102-
0, 0,
103-
camera,
104-
null,
105-
true,
106-
textureUnit
107-
);
63+
continue;
10864
}
65+
66+
var frameWidth = tileset.tileWidth;
67+
var frameHeight = tileset.tileHeight;
68+
69+
var frameX = tileTexCoords.x;
70+
var frameY = tileTexCoords.y;
71+
72+
var tw = tileset.tileWidth * 0.5;
73+
var th = tileset.tileHeight * 0.5;
74+
75+
var tint = getTint(tile.tint, alpha * tile.alpha);
76+
77+
pipeline.batchTexture(
78+
src,
79+
texture,
80+
texture.width, texture.height,
81+
x + ((tw + tile.pixelX) * sx), y + ((th + tile.pixelY) * sy),
82+
tile.width, tile.height,
83+
sx, sy,
84+
tile.rotation,
85+
tile.flipX, tile.flipY,
86+
scrollFactorX, scrollFactorY,
87+
tw, th,
88+
frameX, frameY, frameWidth, frameHeight,
89+
tint, tint, tint, tint, false,
90+
0, 0,
91+
camera,
92+
null,
93+
true,
94+
textureUnit
95+
);
10996
}
11097
};
11198

0 commit comments

Comments
 (0)