diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index e565208..e4e9d01 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -204,7 +204,7 @@ // this is where content gets renderd.. // watch this space for a little render state manager.. - renderer.setObjectRendererer(renderer.spriteRenderer); + renderer.setObjectRenderer(renderer.spriteRenderer); renderer.spriteRenderer.render(this); }; diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index e565208..e4e9d01 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -204,7 +204,7 @@ // this is where content gets renderd.. // watch this space for a little render state manager.. - renderer.setObjectRendererer(renderer.spriteRenderer); + renderer.setObjectRenderer(renderer.spriteRenderer); renderer.spriteRenderer.render(this); }; diff --git a/src/core/primitives/Graphics.js b/src/core/primitives/Graphics.js index e5cee2f..70d28b1 100644 --- a/src/core/primitives/Graphics.js +++ b/src/core/primitives/Graphics.js @@ -747,7 +747,7 @@ this.glDirty = false; } - renderer.setObjectRendererer(renderer.graphicsRenderer); + renderer.setObjectRenderer(renderer.graphicsRenderer); renderer.graphicsRenderer.render(this); }; diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index e565208..e4e9d01 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -204,7 +204,7 @@ // this is where content gets renderd.. // watch this space for a little render state manager.. - renderer.setObjectRendererer(renderer.spriteRenderer); + renderer.setObjectRenderer(renderer.spriteRenderer); renderer.spriteRenderer.render(this); }; diff --git a/src/core/primitives/Graphics.js b/src/core/primitives/Graphics.js index e5cee2f..70d28b1 100644 --- a/src/core/primitives/Graphics.js +++ b/src/core/primitives/Graphics.js @@ -747,7 +747,7 @@ this.glDirty = false; } - renderer.setObjectRendererer(renderer.graphicsRenderer); + renderer.setObjectRenderer(renderer.graphicsRenderer); renderer.graphicsRenderer.render(this); }; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 5d90e91..547bdc7 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -77,7 +77,7 @@ * @member {number} * @private */ - this._backgroundColor = 0x000000; + this._backgroundColor = 0xFFFFFF//000000; /** * The background color as an [R, G, B] array. @@ -376,9 +376,6 @@ //set the default offset this.offset = this.offset; - // start the sprite batch - this.spriteRenderer.begin(); - // start the filter manager this.filterManager.begin(buffer); @@ -386,10 +383,10 @@ displayObject.renderWebGL(this); // finish the sprite batch - this.spriteRenderer.end(); + this.currentRenderer.flush(); }; -WebGLRenderer.prototype.setObjectRendererer = function (objectRenderer) +WebGLRenderer.prototype.setObjectRenderer = function (objectRenderer) { if(this.currentRenderer === objectRenderer) { diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index e565208..e4e9d01 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -204,7 +204,7 @@ // this is where content gets renderd.. // watch this space for a little render state manager.. - renderer.setObjectRendererer(renderer.spriteRenderer); + renderer.setObjectRenderer(renderer.spriteRenderer); renderer.spriteRenderer.render(this); }; diff --git a/src/core/primitives/Graphics.js b/src/core/primitives/Graphics.js index e5cee2f..70d28b1 100644 --- a/src/core/primitives/Graphics.js +++ b/src/core/primitives/Graphics.js @@ -747,7 +747,7 @@ this.glDirty = false; } - renderer.setObjectRendererer(renderer.graphicsRenderer); + renderer.setObjectRenderer(renderer.graphicsRenderer); renderer.graphicsRenderer.render(this); }; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 5d90e91..547bdc7 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -77,7 +77,7 @@ * @member {number} * @private */ - this._backgroundColor = 0x000000; + this._backgroundColor = 0xFFFFFF//000000; /** * The background color as an [R, G, B] array. @@ -376,9 +376,6 @@ //set the default offset this.offset = this.offset; - // start the sprite batch - this.spriteRenderer.begin(); - // start the filter manager this.filterManager.begin(buffer); @@ -386,10 +383,10 @@ displayObject.renderWebGL(this); // finish the sprite batch - this.spriteRenderer.end(); + this.currentRenderer.flush(); }; -WebGLRenderer.prototype.setObjectRendererer = function (objectRenderer) +WebGLRenderer.prototype.setObjectRenderer = function (objectRenderer) { if(this.currentRenderer === objectRenderer) { diff --git a/src/core/renderers/webgl/utils/GraphicsRenderer.js b/src/core/renderers/webgl/utils/GraphicsRenderer.js index 15526d9..6713275 100644 --- a/src/core/renderers/webgl/utils/GraphicsRenderer.js +++ b/src/core/renderers/webgl/utils/GraphicsRenderer.js @@ -39,6 +39,12 @@ // flush! } +GraphicsRenderer.prototype.flush = function() +{ + // flush! +} + + GraphicsRenderer.prototype.render = function(graphics) { diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index e565208..e4e9d01 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -204,7 +204,7 @@ // this is where content gets renderd.. // watch this space for a little render state manager.. - renderer.setObjectRendererer(renderer.spriteRenderer); + renderer.setObjectRenderer(renderer.spriteRenderer); renderer.spriteRenderer.render(this); }; diff --git a/src/core/primitives/Graphics.js b/src/core/primitives/Graphics.js index e5cee2f..70d28b1 100644 --- a/src/core/primitives/Graphics.js +++ b/src/core/primitives/Graphics.js @@ -747,7 +747,7 @@ this.glDirty = false; } - renderer.setObjectRendererer(renderer.graphicsRenderer); + renderer.setObjectRenderer(renderer.graphicsRenderer); renderer.graphicsRenderer.render(this); }; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 5d90e91..547bdc7 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -77,7 +77,7 @@ * @member {number} * @private */ - this._backgroundColor = 0x000000; + this._backgroundColor = 0xFFFFFF//000000; /** * The background color as an [R, G, B] array. @@ -376,9 +376,6 @@ //set the default offset this.offset = this.offset; - // start the sprite batch - this.spriteRenderer.begin(); - // start the filter manager this.filterManager.begin(buffer); @@ -386,10 +383,10 @@ displayObject.renderWebGL(this); // finish the sprite batch - this.spriteRenderer.end(); + this.currentRenderer.flush(); }; -WebGLRenderer.prototype.setObjectRendererer = function (objectRenderer) +WebGLRenderer.prototype.setObjectRenderer = function (objectRenderer) { if(this.currentRenderer === objectRenderer) { diff --git a/src/core/renderers/webgl/utils/GraphicsRenderer.js b/src/core/renderers/webgl/utils/GraphicsRenderer.js index 15526d9..6713275 100644 --- a/src/core/renderers/webgl/utils/GraphicsRenderer.js +++ b/src/core/renderers/webgl/utils/GraphicsRenderer.js @@ -39,6 +39,12 @@ // flush! } +GraphicsRenderer.prototype.flush = function() +{ + // flush! +} + + GraphicsRenderer.prototype.render = function(graphics) { diff --git a/src/core/renderers/webgl/utils/SpriteRenderer.js b/src/core/renderers/webgl/utils/SpriteRenderer.js index 0f05978..dfb2018 100644 --- a/src/core/renderers/webgl/utils/SpriteRenderer.js +++ b/src/core/renderers/webgl/utils/SpriteRenderer.js @@ -199,22 +199,6 @@ this.currentBlendMode = 99999; }; -/** - * - */ -SpriteRenderer.prototype.begin = function () -{ - // this.shader = this.renderer.shaderManager.defaultShader; - - this.start(); -}; - -/** - */ -SpriteRenderer.prototype.end = function () -{ - this.flush(); -}; /** * @param sprite {Sprite} the sprite to render when using this spritebatch @@ -346,125 +330,6 @@ }; -/** - * Renders a TilingSprite using the spriteBatch. - * - * @param sprite {TilingSprite} the tilingSprite to render - */ -SpriteRenderer.prototype.renderTilingSprite = function (tilingSprite) -{ - var texture = tilingSprite.tilingTexture; - - // check texture.. - if (this.currentBatchSize >= this.size) - { - //return; - this.flush(); - this.currentBaseTexture = texture.baseTexture; - } - - // set the textures uvs temporarily - // TODO create a separate texture so that we can tile part of a texture - - if (!tilingSprite._uvs) - { - tilingSprite._uvs = new TextureUvs(); - } - - var uvs = tilingSprite._uvs; - - tilingSprite.tilePosition.x %= texture.baseTexture.width * tilingSprite.tileScaleOffset.x; - tilingSprite.tilePosition.y %= texture.baseTexture.height * tilingSprite.tileScaleOffset.y; - - var offsetX = tilingSprite.tilePosition.x/(texture.baseTexture.width*tilingSprite.tileScaleOffset.x); - var offsetY = tilingSprite.tilePosition.y/(texture.baseTexture.height*tilingSprite.tileScaleOffset.y); - - var scaleX = (tilingSprite.width / texture.baseTexture.width) / (tilingSprite.tileScale.x * tilingSprite.tileScaleOffset.x); - var scaleY = (tilingSprite.height / texture.baseTexture.height) / (tilingSprite.tileScale.y * tilingSprite.tileScaleOffset.y); - - uvs.x0 = 0 - offsetX; - uvs.y0 = 0 - offsetY; - - uvs.x1 = (1 * scaleX) - offsetX; - uvs.y1 = 0 - offsetY; - - uvs.x2 = (1 * scaleX) - offsetX; - uvs.y2 = (1 * scaleY) - offsetY; - - uvs.x3 = 0 - offsetX; - uvs.y3 = (1 * scaleY) - offsetY; - - // get the tilingSprites current alpha and tint and combining them into a single color - var tint = tilingSprite.tint; - var color = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (tilingSprite.alpha * 255 << 24); - - var positions = this.positions; - var colors = this.colors; - - var width = tilingSprite.width; - var height = tilingSprite.height; - - // TODO trim?? - var aX = tilingSprite.anchor.x; - var aY = tilingSprite.anchor.y; - var w0 = width * (1-aX); - var w1 = width * -aX; - - var h0 = height * (1-aY); - var h1 = height * -aY; - - var index = this.currentBatchSize * this.vertByteSize; - - var resolution = texture.baseTexture.resolution; - - var worldTransform = tilingSprite.worldTransform; - - var a = worldTransform.a / resolution;//[0]; - var b = worldTransform.b / resolution;//[3]; - var c = worldTransform.c / resolution;//[1]; - var d = worldTransform.d / resolution;//[4]; - var tx = worldTransform.tx;//[2]; - var ty = worldTransform.ty;//[5]; - - // xy - positions[index++] = a * w1 + c * h1 + tx; - positions[index++] = d * h1 + b * w1 + ty; - // uv - positions[index++] = uvs.x0; - positions[index++] = uvs.y0; - // color - colors[index++] = color; - - // xy - positions[index++] = (a * w0 + c * h1 + tx); - positions[index++] = d * h1 + b * w0 + ty; - // uv - positions[index++] = uvs.x1; - positions[index++] = uvs.y1; - // color - colors[index++] = color; - - // xy - positions[index++] = a * w0 + c * h0 + tx; - positions[index++] = d * h0 + b * w0 + ty; - // uv - positions[index++] = uvs.x2; - positions[index++] = uvs.y2; - // color - colors[index++] = color; - - // xy - positions[index++] = a * w1 + c * h0 + tx; - positions[index++] = d * h0 + b * w1 + ty; - // uv - positions[index++] = uvs.x3; - positions[index++] = uvs.y3; - // color - colors[index++] = color; - - // increment the batchsize - this.sprites[this.currentBatchSize++] = tilingSprite; -}; /** * Renders the content and empties the current batch. diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index e565208..e4e9d01 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -204,7 +204,7 @@ // this is where content gets renderd.. // watch this space for a little render state manager.. - renderer.setObjectRendererer(renderer.spriteRenderer); + renderer.setObjectRenderer(renderer.spriteRenderer); renderer.spriteRenderer.render(this); }; diff --git a/src/core/primitives/Graphics.js b/src/core/primitives/Graphics.js index e5cee2f..70d28b1 100644 --- a/src/core/primitives/Graphics.js +++ b/src/core/primitives/Graphics.js @@ -747,7 +747,7 @@ this.glDirty = false; } - renderer.setObjectRendererer(renderer.graphicsRenderer); + renderer.setObjectRenderer(renderer.graphicsRenderer); renderer.graphicsRenderer.render(this); }; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 5d90e91..547bdc7 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -77,7 +77,7 @@ * @member {number} * @private */ - this._backgroundColor = 0x000000; + this._backgroundColor = 0xFFFFFF//000000; /** * The background color as an [R, G, B] array. @@ -376,9 +376,6 @@ //set the default offset this.offset = this.offset; - // start the sprite batch - this.spriteRenderer.begin(); - // start the filter manager this.filterManager.begin(buffer); @@ -386,10 +383,10 @@ displayObject.renderWebGL(this); // finish the sprite batch - this.spriteRenderer.end(); + this.currentRenderer.flush(); }; -WebGLRenderer.prototype.setObjectRendererer = function (objectRenderer) +WebGLRenderer.prototype.setObjectRenderer = function (objectRenderer) { if(this.currentRenderer === objectRenderer) { diff --git a/src/core/renderers/webgl/utils/GraphicsRenderer.js b/src/core/renderers/webgl/utils/GraphicsRenderer.js index 15526d9..6713275 100644 --- a/src/core/renderers/webgl/utils/GraphicsRenderer.js +++ b/src/core/renderers/webgl/utils/GraphicsRenderer.js @@ -39,6 +39,12 @@ // flush! } +GraphicsRenderer.prototype.flush = function() +{ + // flush! +} + + GraphicsRenderer.prototype.render = function(graphics) { diff --git a/src/core/renderers/webgl/utils/SpriteRenderer.js b/src/core/renderers/webgl/utils/SpriteRenderer.js index 0f05978..dfb2018 100644 --- a/src/core/renderers/webgl/utils/SpriteRenderer.js +++ b/src/core/renderers/webgl/utils/SpriteRenderer.js @@ -199,22 +199,6 @@ this.currentBlendMode = 99999; }; -/** - * - */ -SpriteRenderer.prototype.begin = function () -{ - // this.shader = this.renderer.shaderManager.defaultShader; - - this.start(); -}; - -/** - */ -SpriteRenderer.prototype.end = function () -{ - this.flush(); -}; /** * @param sprite {Sprite} the sprite to render when using this spritebatch @@ -346,125 +330,6 @@ }; -/** - * Renders a TilingSprite using the spriteBatch. - * - * @param sprite {TilingSprite} the tilingSprite to render - */ -SpriteRenderer.prototype.renderTilingSprite = function (tilingSprite) -{ - var texture = tilingSprite.tilingTexture; - - // check texture.. - if (this.currentBatchSize >= this.size) - { - //return; - this.flush(); - this.currentBaseTexture = texture.baseTexture; - } - - // set the textures uvs temporarily - // TODO create a separate texture so that we can tile part of a texture - - if (!tilingSprite._uvs) - { - tilingSprite._uvs = new TextureUvs(); - } - - var uvs = tilingSprite._uvs; - - tilingSprite.tilePosition.x %= texture.baseTexture.width * tilingSprite.tileScaleOffset.x; - tilingSprite.tilePosition.y %= texture.baseTexture.height * tilingSprite.tileScaleOffset.y; - - var offsetX = tilingSprite.tilePosition.x/(texture.baseTexture.width*tilingSprite.tileScaleOffset.x); - var offsetY = tilingSprite.tilePosition.y/(texture.baseTexture.height*tilingSprite.tileScaleOffset.y); - - var scaleX = (tilingSprite.width / texture.baseTexture.width) / (tilingSprite.tileScale.x * tilingSprite.tileScaleOffset.x); - var scaleY = (tilingSprite.height / texture.baseTexture.height) / (tilingSprite.tileScale.y * tilingSprite.tileScaleOffset.y); - - uvs.x0 = 0 - offsetX; - uvs.y0 = 0 - offsetY; - - uvs.x1 = (1 * scaleX) - offsetX; - uvs.y1 = 0 - offsetY; - - uvs.x2 = (1 * scaleX) - offsetX; - uvs.y2 = (1 * scaleY) - offsetY; - - uvs.x3 = 0 - offsetX; - uvs.y3 = (1 * scaleY) - offsetY; - - // get the tilingSprites current alpha and tint and combining them into a single color - var tint = tilingSprite.tint; - var color = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (tilingSprite.alpha * 255 << 24); - - var positions = this.positions; - var colors = this.colors; - - var width = tilingSprite.width; - var height = tilingSprite.height; - - // TODO trim?? - var aX = tilingSprite.anchor.x; - var aY = tilingSprite.anchor.y; - var w0 = width * (1-aX); - var w1 = width * -aX; - - var h0 = height * (1-aY); - var h1 = height * -aY; - - var index = this.currentBatchSize * this.vertByteSize; - - var resolution = texture.baseTexture.resolution; - - var worldTransform = tilingSprite.worldTransform; - - var a = worldTransform.a / resolution;//[0]; - var b = worldTransform.b / resolution;//[3]; - var c = worldTransform.c / resolution;//[1]; - var d = worldTransform.d / resolution;//[4]; - var tx = worldTransform.tx;//[2]; - var ty = worldTransform.ty;//[5]; - - // xy - positions[index++] = a * w1 + c * h1 + tx; - positions[index++] = d * h1 + b * w1 + ty; - // uv - positions[index++] = uvs.x0; - positions[index++] = uvs.y0; - // color - colors[index++] = color; - - // xy - positions[index++] = (a * w0 + c * h1 + tx); - positions[index++] = d * h1 + b * w0 + ty; - // uv - positions[index++] = uvs.x1; - positions[index++] = uvs.y1; - // color - colors[index++] = color; - - // xy - positions[index++] = a * w0 + c * h0 + tx; - positions[index++] = d * h0 + b * w0 + ty; - // uv - positions[index++] = uvs.x2; - positions[index++] = uvs.y2; - // color - colors[index++] = color; - - // xy - positions[index++] = a * w1 + c * h0 + tx; - positions[index++] = d * h0 + b * w1 + ty; - // uv - positions[index++] = uvs.x3; - positions[index++] = uvs.y3; - // color - colors[index++] = color; - - // increment the batchsize - this.sprites[this.currentBatchSize++] = tilingSprite; -}; /** * Renders the content and empties the current batch. diff --git a/src/extras/TilingSprite.js b/src/extras/TilingSprite.js index 31da393..3410199 100644 --- a/src/extras/TilingSprite.js +++ b/src/extras/TilingSprite.js @@ -1,4 +1,5 @@ var core = require('../core'); +var TextureUvs = require('../core/textures/TextureUvs') /** * A tiling sprite is a fast way of rendering a tiling image @@ -50,28 +51,15 @@ this.tilePosition = new core.math.Point(0,0); /** - * Whether this sprite is renderable or not - * - * @member {boolean} - * @default true - */ - this.renderable = true; - - /** - * The tint applied to the sprite. This is a hex value - * - * @member {number} - * @default 0xFFFFFF - */ - this.tint = 0xFFFFFF; - - /** * The blend mode to be applied to the sprite * * @member {number} * @default blendModes.NORMAL; */ this.blendMode = core.CONST.blendModes.NORMAL; + + + this._uvs = new TextureUvs(); } TilingSprite.prototype = Object.create(core.Sprite.prototype); @@ -138,29 +126,9 @@ * * @param renderer {WebGLRenderer} */ -TilingSprite.prototype.renderWebGL = function (renderer) +TilingSprite.prototype._renderWebGL = function (renderer) { - if (!this.visible || this.alpha <= 0) - { - return; - } - - var i, j; - - if (this._mask) - { - renderer.spriteBatch.stop(); - renderer.maskManager.pushMask(this.mask, renderer); - renderer.spriteBatch.start(); - } - - if (this._filters) - { - renderer.spriteBatch.flush(); - renderer.filterManager.pushFilter(this._filterBlock); - } - - + if (!this.tilingTexture || this.refreshTexture) { @@ -173,30 +141,45 @@ this.tilingTexture.needsUpdate = false; // this.tilingTexture._uvs = null; } + } else { - renderer.spriteBatch.renderTilingSprite(this); - } - // simple render children! - for (i=0,j=this.children.length; i= this.size) - { - //return; - this.flush(); - this.currentBaseTexture = texture.baseTexture; - } - - // set the textures uvs temporarily - // TODO create a separate texture so that we can tile part of a texture - - if (!tilingSprite._uvs) - { - tilingSprite._uvs = new TextureUvs(); - } - - var uvs = tilingSprite._uvs; - - tilingSprite.tilePosition.x %= texture.baseTexture.width * tilingSprite.tileScaleOffset.x; - tilingSprite.tilePosition.y %= texture.baseTexture.height * tilingSprite.tileScaleOffset.y; - - var offsetX = tilingSprite.tilePosition.x/(texture.baseTexture.width*tilingSprite.tileScaleOffset.x); - var offsetY = tilingSprite.tilePosition.y/(texture.baseTexture.height*tilingSprite.tileScaleOffset.y); - - var scaleX = (tilingSprite.width / texture.baseTexture.width) / (tilingSprite.tileScale.x * tilingSprite.tileScaleOffset.x); - var scaleY = (tilingSprite.height / texture.baseTexture.height) / (tilingSprite.tileScale.y * tilingSprite.tileScaleOffset.y); - - uvs.x0 = 0 - offsetX; - uvs.y0 = 0 - offsetY; - - uvs.x1 = (1 * scaleX) - offsetX; - uvs.y1 = 0 - offsetY; - - uvs.x2 = (1 * scaleX) - offsetX; - uvs.y2 = (1 * scaleY) - offsetY; - - uvs.x3 = 0 - offsetX; - uvs.y3 = (1 * scaleY) - offsetY; - - // get the tilingSprites current alpha and tint and combining them into a single color - var tint = tilingSprite.tint; - var color = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (tilingSprite.alpha * 255 << 24); - - var positions = this.positions; - var colors = this.colors; - - var width = tilingSprite.width; - var height = tilingSprite.height; - - // TODO trim?? - var aX = tilingSprite.anchor.x; - var aY = tilingSprite.anchor.y; - var w0 = width * (1-aX); - var w1 = width * -aX; - - var h0 = height * (1-aY); - var h1 = height * -aY; - - var index = this.currentBatchSize * this.vertByteSize; - - var resolution = texture.baseTexture.resolution; - - var worldTransform = tilingSprite.worldTransform; - - var a = worldTransform.a / resolution;//[0]; - var b = worldTransform.b / resolution;//[3]; - var c = worldTransform.c / resolution;//[1]; - var d = worldTransform.d / resolution;//[4]; - var tx = worldTransform.tx;//[2]; - var ty = worldTransform.ty;//[5]; - - // xy - positions[index++] = a * w1 + c * h1 + tx; - positions[index++] = d * h1 + b * w1 + ty; - // uv - positions[index++] = uvs.x0; - positions[index++] = uvs.y0; - // color - colors[index++] = color; - - // xy - positions[index++] = (a * w0 + c * h1 + tx); - positions[index++] = d * h1 + b * w0 + ty; - // uv - positions[index++] = uvs.x1; - positions[index++] = uvs.y1; - // color - colors[index++] = color; - - // xy - positions[index++] = a * w0 + c * h0 + tx; - positions[index++] = d * h0 + b * w0 + ty; - // uv - positions[index++] = uvs.x2; - positions[index++] = uvs.y2; - // color - colors[index++] = color; - - // xy - positions[index++] = a * w1 + c * h0 + tx; - positions[index++] = d * h0 + b * w1 + ty; - // uv - positions[index++] = uvs.x3; - positions[index++] = uvs.y3; - // color - colors[index++] = color; - - // increment the batchsize - this.sprites[this.currentBatchSize++] = tilingSprite; -}; /** * Renders the content and empties the current batch. diff --git a/src/extras/TilingSprite.js b/src/extras/TilingSprite.js index 31da393..3410199 100644 --- a/src/extras/TilingSprite.js +++ b/src/extras/TilingSprite.js @@ -1,4 +1,5 @@ var core = require('../core'); +var TextureUvs = require('../core/textures/TextureUvs') /** * A tiling sprite is a fast way of rendering a tiling image @@ -50,28 +51,15 @@ this.tilePosition = new core.math.Point(0,0); /** - * Whether this sprite is renderable or not - * - * @member {boolean} - * @default true - */ - this.renderable = true; - - /** - * The tint applied to the sprite. This is a hex value - * - * @member {number} - * @default 0xFFFFFF - */ - this.tint = 0xFFFFFF; - - /** * The blend mode to be applied to the sprite * * @member {number} * @default blendModes.NORMAL; */ this.blendMode = core.CONST.blendModes.NORMAL; + + + this._uvs = new TextureUvs(); } TilingSprite.prototype = Object.create(core.Sprite.prototype); @@ -138,29 +126,9 @@ * * @param renderer {WebGLRenderer} */ -TilingSprite.prototype.renderWebGL = function (renderer) +TilingSprite.prototype._renderWebGL = function (renderer) { - if (!this.visible || this.alpha <= 0) - { - return; - } - - var i, j; - - if (this._mask) - { - renderer.spriteBatch.stop(); - renderer.maskManager.pushMask(this.mask, renderer); - renderer.spriteBatch.start(); - } - - if (this._filters) - { - renderer.spriteBatch.flush(); - renderer.filterManager.pushFilter(this._filterBlock); - } - - + if (!this.tilingTexture || this.refreshTexture) { @@ -173,30 +141,45 @@ this.tilingTexture.needsUpdate = false; // this.tilingTexture._uvs = null; } + } else { - renderer.spriteBatch.renderTilingSprite(this); - } - // simple render children! - for (i=0,j=this.children.length; i