phaser/src/gameobjects/tilemap/dynamiclayer/DynamicTilemapLayerWebGLRenderer.js

55 lines
1.8 KiB
JavaScript
Raw Normal View History

var GameObject = require('../../GameObject');
var DynamicTilemapLayerWebGLRenderer = function (renderer, gameObject, interpolationPercentage, camera)
2017-06-09 04:00:12 +00:00
{
if (GameObject.RENDER_MASK !== gameObject.renderFlags || (gameObject.cameraFilter > 0 && (gameObject.cameraFilter & camera._id)))
2017-06-09 04:00:12 +00:00
{
return;
}
gameObject.cull(camera);
2017-06-22 02:19:03 +00:00
var renderTiles = gameObject.culledTiles;
2017-06-09 04:00:12 +00:00
var length = renderTiles.length;
2017-06-22 02:19:03 +00:00
var batch = renderer.spriteBatch;
var texture = gameObject.texture.source[0].glTexture;
var textureWidth = texture.width;
var textureHeight = texture.height;
var tileset = this.tileset;
2017-06-22 02:19:03 +00:00
var renderTarget = gameObject.renderTarget;
var scrollFactorX = gameObject.scrollFactorX;
var scrollFactorY = gameObject.scrollFactorY;
var alpha = gameObject.alpha;
var x = gameObject.x;
var y = gameObject.y;
var sx = gameObject.scaleX;
var sy = gameObject.scaleY;
2017-06-09 04:00:12 +00:00
for (var index = 0; index < length; ++index)
{
2017-06-22 02:19:03 +00:00
var tile = renderTiles[index];
var tileTexCoords = tileset.getTileTextureCoordinates(tile.index);
if (tileTexCoords === null) { continue; }
var frameWidth = tile.width * (tile.flipX ? -1 : 1);
var frameHeight = tile.height * (tile.flipY ? -1 : 1);
var frameX = tileTexCoords.x + (tile.flipX ? tile.width : 0);
var frameY = tileTexCoords.y + (tile.flipY ? tile.height : 0);
2017-06-22 02:19:03 +00:00
batch.addTileTextureRect(
texture,
x + tile.pixelX * sx, y + tile.pixelY * sy,
tile.width * sx, tile.height * sy,
alpha * tile.alpha, tile.tint,
2017-06-22 02:19:03 +00:00
scrollFactorX, scrollFactorY,
textureWidth, textureHeight,
frameX, frameY, frameWidth, frameHeight,
2017-06-22 02:19:03 +00:00
camera,
renderTarget
);
2017-06-09 04:00:12 +00:00
}
};
module.exports = DynamicTilemapLayerWebGLRenderer;