mirror of
https://github.com/photonstorm/phaser
synced 2024-11-23 21:24:09 +00:00
Fixed issue with null texture on particle emitter batch generation
This commit is contained in:
parent
6293233488
commit
57333ea492
1 changed files with 90 additions and 7 deletions
|
@ -277,6 +277,7 @@ var TextureTintPipeline = new Class({
|
||||||
|
|
||||||
this.vertexCount = 0;
|
this.vertexCount = 0;
|
||||||
batches.length = 0;
|
batches.length = 0;
|
||||||
|
this.pushBatch();
|
||||||
this.flushLocked = false;
|
this.flushLocked = false;
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
@ -375,7 +376,6 @@ var TextureTintPipeline = new Class({
|
||||||
var vertexViewF32 = this.vertexViewF32;
|
var vertexViewF32 = this.vertexViewF32;
|
||||||
var vertexViewU32 = this.vertexViewU32;
|
var vertexViewU32 = this.vertexViewU32;
|
||||||
var renderer = this.renderer;
|
var renderer = this.renderer;
|
||||||
var resolution = renderer.config.resolution; // eslint-disable-line no-unused-vars
|
|
||||||
var maxQuads = this.maxQuads;
|
var maxQuads = this.maxQuads;
|
||||||
var cameraScrollX = camera.scrollX;
|
var cameraScrollX = camera.scrollX;
|
||||||
var cameraScrollY = camera.scrollY;
|
var cameraScrollY = camera.scrollY;
|
||||||
|
@ -505,6 +505,8 @@ var TextureTintPipeline = new Class({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.setTexture2D(texture, 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -524,7 +526,6 @@ var TextureTintPipeline = new Class({
|
||||||
var vertexViewF32 = this.vertexViewF32;
|
var vertexViewF32 = this.vertexViewF32;
|
||||||
var vertexViewU32 = this.vertexViewU32;
|
var vertexViewU32 = this.vertexViewU32;
|
||||||
var renderer = this.renderer;
|
var renderer = this.renderer;
|
||||||
var resolution = renderer.config.resolution; // eslint-disable-line no-unused-vars
|
|
||||||
var list = blitter.getRenderList();
|
var list = blitter.getRenderList();
|
||||||
var length = list.length;
|
var length = list.length;
|
||||||
var cameraMatrix = camera.matrix.matrix;
|
var cameraMatrix = camera.matrix.matrix;
|
||||||
|
@ -643,7 +644,6 @@ var TextureTintPipeline = new Class({
|
||||||
var vertexViewF32 = this.vertexViewF32;
|
var vertexViewF32 = this.vertexViewF32;
|
||||||
var vertexViewU32 = this.vertexViewU32;
|
var vertexViewU32 = this.vertexViewU32;
|
||||||
var renderer = this.renderer;
|
var renderer = this.renderer;
|
||||||
var resolution = renderer.config.resolution; // eslint-disable-line no-unused-vars
|
|
||||||
var cameraMatrix = camera.matrix.matrix;
|
var cameraMatrix = camera.matrix.matrix;
|
||||||
var frame = sprite.frame;
|
var frame = sprite.frame;
|
||||||
var texture = frame.texture.source[frame.sourceIndex].glTexture;
|
var texture = frame.texture.source[frame.sourceIndex].glTexture;
|
||||||
|
@ -771,7 +771,6 @@ var TextureTintPipeline = new Class({
|
||||||
var vertexViewF32 = this.vertexViewF32;
|
var vertexViewF32 = this.vertexViewF32;
|
||||||
var vertexViewU32 = this.vertexViewU32;
|
var vertexViewU32 = this.vertexViewU32;
|
||||||
var renderer = this.renderer;
|
var renderer = this.renderer;
|
||||||
var resolution = renderer.config.resolution; // eslint-disable-line no-unused-vars
|
|
||||||
var cameraMatrix = camera.matrix.matrix;
|
var cameraMatrix = camera.matrix.matrix;
|
||||||
var frame = mesh.frame;
|
var frame = mesh.frame;
|
||||||
var texture = mesh.texture.source[frame.sourceIndex].glTexture;
|
var texture = mesh.texture.source[frame.sourceIndex].glTexture;
|
||||||
|
@ -850,7 +849,6 @@ var TextureTintPipeline = new Class({
|
||||||
var vertexViewF32 = this.vertexViewF32;
|
var vertexViewF32 = this.vertexViewF32;
|
||||||
var vertexViewU32 = this.vertexViewU32;
|
var vertexViewU32 = this.vertexViewU32;
|
||||||
var renderer = this.renderer;
|
var renderer = this.renderer;
|
||||||
var resolution = renderer.config.resolution; // eslint-disable-line no-unused-vars
|
|
||||||
var cameraMatrix = camera.matrix.matrix;
|
var cameraMatrix = camera.matrix.matrix;
|
||||||
var cameraWidth = camera.width + 50;
|
var cameraWidth = camera.width + 50;
|
||||||
var cameraHeight = camera.height + 50;
|
var cameraHeight = camera.height + 50;
|
||||||
|
@ -1074,7 +1072,6 @@ var TextureTintPipeline = new Class({
|
||||||
var vertexViewF32 = this.vertexViewF32;
|
var vertexViewF32 = this.vertexViewF32;
|
||||||
var vertexViewU32 = this.vertexViewU32;
|
var vertexViewU32 = this.vertexViewU32;
|
||||||
var renderer = this.renderer;
|
var renderer = this.renderer;
|
||||||
var resolution = renderer.config.resolution; // eslint-disable-line no-unused-vars
|
|
||||||
var cameraMatrix = camera.matrix.matrix;
|
var cameraMatrix = camera.matrix.matrix;
|
||||||
var frame = bitmapText.frame;
|
var frame = bitmapText.frame;
|
||||||
var textureSource = bitmapText.texture.source[frame.sourceIndex];
|
var textureSource = bitmapText.texture.source[frame.sourceIndex];
|
||||||
|
@ -1535,7 +1532,6 @@ var TextureTintPipeline = new Class({
|
||||||
var vertexViewF32 = this.vertexViewF32;
|
var vertexViewF32 = this.vertexViewF32;
|
||||||
var vertexViewU32 = this.vertexViewU32;
|
var vertexViewU32 = this.vertexViewU32;
|
||||||
var renderer = this.renderer;
|
var renderer = this.renderer;
|
||||||
var resolution = renderer.config.resolution; // eslint-disable-line no-unused-vars
|
|
||||||
var cameraMatrix = camera.matrix.matrix;
|
var cameraMatrix = camera.matrix.matrix;
|
||||||
var width = srcWidth * (flipX ? -1.0 : 1.0);
|
var width = srcWidth * (flipX ? -1.0 : 1.0);
|
||||||
var height = srcHeight * (flipY ? -1.0 : 1.0);
|
var height = srcHeight * (flipY ? -1.0 : 1.0);
|
||||||
|
@ -1617,6 +1613,93 @@ var TextureTintPipeline = new Class({
|
||||||
this.vertexCount += 6;
|
this.vertexCount += 6;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
drawTexture: function (
|
||||||
|
texture,
|
||||||
|
srcX, srcY,
|
||||||
|
frameX, frameY, frameWidth, frameHeight,
|
||||||
|
transformMatrix
|
||||||
|
)
|
||||||
|
{
|
||||||
|
this.renderer.setPipeline(this);
|
||||||
|
|
||||||
|
if (this.vertexCount + 6 > this.vertexCapacity)
|
||||||
|
{
|
||||||
|
this.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
var vertexViewF32 = this.vertexViewF32;
|
||||||
|
var vertexViewU32 = this.vertexViewU32;
|
||||||
|
var renderer = this.renderer;
|
||||||
|
var width = srcWidth;
|
||||||
|
var height = srcHeight;
|
||||||
|
var x = srcX;
|
||||||
|
var y = srcY;
|
||||||
|
var xw = x + width;
|
||||||
|
var yh = y + height;
|
||||||
|
var mva = transformMatrix[0];
|
||||||
|
var mvb = transformMatrix[1];
|
||||||
|
var mvc = transformMatrix[2];
|
||||||
|
var mvd = transformMatrix[3];
|
||||||
|
var mve = transformMatrix[4];
|
||||||
|
var mvf = transformMatrix[5];
|
||||||
|
var tx0 = x * mva + y * mvc + mve;
|
||||||
|
var ty0 = x * mvb + y * mvd + mvf;
|
||||||
|
var tx1 = x * mva + yh * mvc + mve;
|
||||||
|
var ty1 = x * mvb + yh * mvd + mvf;
|
||||||
|
var tx2 = xw * mva + yh * mvc + mve;
|
||||||
|
var ty2 = xw * mvb + yh * mvd + mvf;
|
||||||
|
var tx3 = xw * mva + y * mvc + mve;
|
||||||
|
var ty3 = xw * mvb + y * mvd + mvf;
|
||||||
|
var vertexOffset = 0;
|
||||||
|
var textureWidth = texture.width;
|
||||||
|
var textureHeight = texture.height;
|
||||||
|
var u0 = (frameX / textureWidth);
|
||||||
|
var v0 = (frameY / textureHeight);
|
||||||
|
var u1 = (frameX + frameWidth) / textureWidth;
|
||||||
|
var v1 = (frameY + frameHeight) / textureHeight;
|
||||||
|
var tint = 0xffffffff;
|
||||||
|
|
||||||
|
this.setTexture2D(texture, 0);
|
||||||
|
|
||||||
|
vertexOffset = this.vertexCount * this.vertexComponentCount;
|
||||||
|
|
||||||
|
vertexViewF32[vertexOffset + 0] = tx0;
|
||||||
|
vertexViewF32[vertexOffset + 1] = ty0;
|
||||||
|
vertexViewF32[vertexOffset + 2] = u0;
|
||||||
|
vertexViewF32[vertexOffset + 3] = v0;
|
||||||
|
vertexViewU32[vertexOffset + 4] = tint;
|
||||||
|
vertexViewF32[vertexOffset + 5] = tx1;
|
||||||
|
vertexViewF32[vertexOffset + 6] = ty1;
|
||||||
|
vertexViewF32[vertexOffset + 7] = u0;
|
||||||
|
vertexViewF32[vertexOffset + 8] = v1;
|
||||||
|
vertexViewU32[vertexOffset + 9] = tint;
|
||||||
|
vertexViewF32[vertexOffset + 10] = tx2;
|
||||||
|
vertexViewF32[vertexOffset + 11] = ty2;
|
||||||
|
vertexViewF32[vertexOffset + 12] = u1;
|
||||||
|
vertexViewF32[vertexOffset + 13] = v1;
|
||||||
|
vertexViewU32[vertexOffset + 14] = tint;
|
||||||
|
vertexViewF32[vertexOffset + 15] = tx0;
|
||||||
|
vertexViewF32[vertexOffset + 16] = ty0;
|
||||||
|
vertexViewF32[vertexOffset + 17] = u0;
|
||||||
|
vertexViewF32[vertexOffset + 18] = v0;
|
||||||
|
vertexViewU32[vertexOffset + 19] = tint;
|
||||||
|
vertexViewF32[vertexOffset + 20] = tx2;
|
||||||
|
vertexViewF32[vertexOffset + 21] = ty2;
|
||||||
|
vertexViewF32[vertexOffset + 22] = u1;
|
||||||
|
vertexViewF32[vertexOffset + 23] = v1;
|
||||||
|
vertexViewU32[vertexOffset + 24] = tint;
|
||||||
|
vertexViewF32[vertexOffset + 25] = tx3;
|
||||||
|
vertexViewF32[vertexOffset + 26] = ty3;
|
||||||
|
vertexViewF32[vertexOffset + 27] = u1;
|
||||||
|
vertexViewF32[vertexOffset + 28] = v0;
|
||||||
|
vertexViewU32[vertexOffset + 29] = tint;
|
||||||
|
|
||||||
|
this.vertexCount += 6;
|
||||||
|
|
||||||
|
// Force an immediate draw
|
||||||
|
this.flush();
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [description]
|
* [description]
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue