Skip to content

Commit 1941d8a

Browse files
committed
Removed drawStaticTilemapLayer method and updated layer vertex code
1 parent 4d30de5 commit 1941d8a

3 files changed

Lines changed: 87 additions & 73 deletions

File tree

src/renderer/webgl/pipelines/TextureTintPipeline.js

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -344,45 +344,10 @@ var TextureTintPipeline = new Class({
344344
resize: function (width, height, resolution)
345345
{
346346
WebGLPipeline.prototype.resize.call(this, width, height, resolution);
347-
this.projOrtho(0, this.width, this.height, 0, -1000.0, 1000.0);
348-
return this;
349-
},
350347

351-
/**
352-
* Renders immediately a static tilemap. This function won't use
353-
* the batching functionality of the pipeline.
354-
*
355-
* @method Phaser.Renderer.WebGL.Pipelines.TextureTintPipeline#drawStaticTilemapLayer
356-
* @since 3.0.0
357-
*
358-
* @param {Phaser.Tilemaps.StaticTilemapLayer} tilemap - [description]
359-
* @param {Phaser.Cameras.Scene2D.Camera} camera - [description]
360-
* @param {Phaser.GameObjects.Components.TransformMatrix} parentTransformMatrix - [description]
361-
*/
362-
drawStaticTilemapLayer: function (tilemap)
363-
{
364-
if (tilemap.vertexCount > 0)
365-
{
366-
var pipelineVertexBuffer = this.vertexBuffer;
367-
var gl = this.gl;
368-
var renderer = this.renderer;
369-
var frame = tilemap.tileset.image.get();
370-
371-
if (renderer.currentPipeline &&
372-
renderer.currentPipeline.vertexCount > 0)
373-
{
374-
renderer.flush();
375-
}
376-
377-
this.vertexBuffer = tilemap.vertexBuffer;
378-
renderer.setPipeline(this);
379-
renderer.setTexture2D(frame.source.glTexture, 0);
380-
gl.drawArrays(this.topology, 0, tilemap.vertexCount);
381-
this.vertexBuffer = pipelineVertexBuffer;
382-
}
348+
this.projOrtho(0, this.width, this.height, 0, -1000.0, 1000.0);
383349

384-
this.viewIdentity();
385-
this.modelIdentity();
350+
return this;
386351
},
387352

388353
/**

src/tilemaps/staticlayer/StaticTilemapLayer.js

Lines changed: 56 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,9 @@ var StaticTilemapLayer = new Class({
238238
var gl = renderer.gl;
239239
var vertexBuffer = this.vertexBuffer;
240240
var bufferData = this.bufferData;
241-
var voffset = 0;
241+
var voffset = -1;
242242
var vertexCount = 0;
243+
var tintEffect = false;
243244
var bufferSize = (mapWidth * mapHeight) * pipeline.vertexSize * 6;
244245

245246
if (bufferData === null)
@@ -258,15 +259,23 @@ var StaticTilemapLayer = new Class({
258259
for (col = 0; col < mapWidth; ++col)
259260
{
260261
tile = mapData[row][col];
261-
if (tile === null || tile.index === -1) { continue; }
262+
263+
if (tile === null || tile.index === -1)
264+
{
265+
continue;
266+
}
262267

263268
var tx = tile.pixelX;
264269
var ty = tile.pixelY;
265270
var txw = tx + tile.width;
266271
var tyh = ty + tile.height;
267272

268273
texCoords = tileset.getTileTextureCoordinates(tile.index);
269-
if (texCoords === null) { continue; }
274+
275+
if (texCoords === null)
276+
{
277+
continue;
278+
}
270279

271280
var u0 = texCoords.x / width;
272281
var v0 = texCoords.y / height;
@@ -281,46 +290,58 @@ var StaticTilemapLayer = new Class({
281290
var ty2 = tyh;
282291
var tx3 = txw;
283292
var ty3 = ty;
293+
284294
var tint = Utils.getTintAppendFloatAlpha(0xffffff, camera.alpha * this.alpha * tile.alpha);
285295

286-
vertexViewF32[voffset + 0] = tx0;
287-
vertexViewF32[voffset + 1] = ty0;
288-
vertexViewF32[voffset + 2] = u0;
289-
vertexViewF32[voffset + 3] = v0;
290-
vertexViewU32[voffset + 4] = tint;
291-
vertexViewF32[voffset + 5] = tx1;
292-
vertexViewF32[voffset + 6] = ty1;
293-
vertexViewF32[voffset + 7] = u0;
294-
vertexViewF32[voffset + 8] = v1;
295-
vertexViewU32[voffset + 9] = tint;
296-
vertexViewF32[voffset + 10] = tx2;
297-
vertexViewF32[voffset + 11] = ty2;
298-
vertexViewF32[voffset + 12] = u1;
299-
vertexViewF32[voffset + 13] = v1;
300-
vertexViewU32[voffset + 14] = tint;
301-
vertexViewF32[voffset + 15] = tx0;
302-
vertexViewF32[voffset + 16] = ty0;
303-
vertexViewF32[voffset + 17] = u0;
304-
vertexViewF32[voffset + 18] = v0;
305-
vertexViewU32[voffset + 19] = tint;
306-
vertexViewF32[voffset + 20] = tx2;
307-
vertexViewF32[voffset + 21] = ty2;
308-
vertexViewF32[voffset + 22] = u1;
309-
vertexViewF32[voffset + 23] = v1;
310-
vertexViewU32[voffset + 24] = tint;
311-
vertexViewF32[voffset + 25] = tx3;
312-
vertexViewF32[voffset + 26] = ty3;
313-
vertexViewF32[voffset + 27] = u1;
314-
vertexViewF32[voffset + 28] = v0;
315-
vertexViewU32[voffset + 29] = tint;
316-
317-
voffset += 30;
296+
vertexViewF32[++voffset] = tx0;
297+
vertexViewF32[++voffset] = ty0;
298+
vertexViewF32[++voffset] = u0;
299+
vertexViewF32[++voffset] = v0;
300+
vertexViewF32[++voffset] = tintEffect;
301+
vertexViewU32[++voffset] = tint;
302+
303+
vertexViewF32[++voffset] = tx1;
304+
vertexViewF32[++voffset] = ty1;
305+
vertexViewF32[++voffset] = u0;
306+
vertexViewF32[++voffset] = v1;
307+
vertexViewF32[++voffset] = tintEffect;
308+
vertexViewU32[++voffset] = tint;
309+
310+
vertexViewF32[++voffset] = tx2;
311+
vertexViewF32[++voffset] = ty2;
312+
vertexViewF32[++voffset] = u1;
313+
vertexViewF32[++voffset] = v1;
314+
vertexViewF32[++voffset] = tintEffect;
315+
vertexViewU32[++voffset] = tint;
316+
317+
vertexViewF32[++voffset] = tx0;
318+
vertexViewF32[++voffset] = ty0;
319+
vertexViewF32[++voffset] = u0;
320+
vertexViewF32[++voffset] = v0;
321+
vertexViewF32[++voffset] = tintEffect;
322+
vertexViewU32[++voffset] = tint;
323+
324+
vertexViewF32[++voffset] = tx2;
325+
vertexViewF32[++voffset] = ty2;
326+
vertexViewF32[++voffset] = u1;
327+
vertexViewF32[++voffset] = v1;
328+
vertexViewF32[++voffset] = tintEffect;
329+
vertexViewU32[++voffset] = tint;
330+
331+
vertexViewF32[++voffset] = tx3;
332+
vertexViewF32[++voffset] = ty3;
333+
vertexViewF32[++voffset] = u1;
334+
vertexViewF32[++voffset] = v0;
335+
vertexViewF32[++voffset] = tintEffect;
336+
vertexViewU32[++voffset] = tint;
337+
318338
vertexCount += 6;
319339
}
320340
}
321341

322342
this.vertexCount = vertexCount;
323343
this.dirty = false;
344+
324345
if (vertexBuffer === null)
325346
{
326347
vertexBuffer = renderer.createVertexBuffer(bufferData, gl.STATIC_DRAW);

src/tilemaps/staticlayer/StaticTilemapLayerWebGLRenderer.js

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ var GameObject = require('../../gameobjects/GameObject');
88

99
/**
1010
* Renders this Game Object with the WebGL Renderer to the given Camera.
11+
*
1112
* The object will not render if any of its renderFlags are set or it is being actively filtered out by the Camera.
1213
* This method should not be called directly. It is a utility function of the Render module.
14+
*
15+
* A Static Tilemap Layer renders immediately and does not use any batching.
1316
*
1417
* @method Phaser.Tilemaps.StaticTilemapLayer#renderWebGL
1518
* @since 3.0.0
@@ -29,7 +32,32 @@ var StaticTilemapLayerWebGLRenderer = function (renderer, src, interpolationPerc
2932

3033
src.upload(camera);
3134

32-
this.pipeline.drawStaticTilemapLayer(src, camera);
35+
if (src.vertexCount > 0)
36+
{
37+
var gl = renderer.gl;
38+
var pipeline = this.pipeline;
39+
var pipelineVertexBuffer = pipeline.vertexBuffer;
40+
41+
var frame = src.tileset.image.get();
42+
43+
if (renderer.currentPipeline && renderer.currentPipeline.vertexCount > 0)
44+
{
45+
renderer.flush();
46+
}
47+
48+
pipeline.vertexBuffer = src.vertexBuffer;
49+
50+
renderer.setPipeline(pipeline);
51+
52+
renderer.setTexture2D(frame.source.glTexture, 0);
53+
54+
gl.drawArrays(pipeline.topology, 0, src.vertexCount);
55+
56+
pipeline.vertexBuffer = pipelineVertexBuffer;
57+
58+
pipeline.viewIdentity();
59+
pipeline.modelIdentity();
60+
}
3361
};
3462

3563
module.exports = StaticTilemapLayerWebGLRenderer;

0 commit comments

Comments
 (0)