diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index 4830cd0..867ac89 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -147,6 +147,10 @@ return this._texture; }, set: function (value) { + if (this._texture === value) { + return; + } + this._texture = value; this.cachedTint = 0xFFFFFF; diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index 4830cd0..867ac89 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -147,6 +147,10 @@ return this._texture; }, set: function (value) { + if (this._texture === value) { + return; + } + this._texture = value; this.cachedTint = 0xFFFFFF; diff --git a/src/extras/Rope.js b/src/extras/Rope.js index 66c9800..82f312a 100644 --- a/src/extras/Rope.js +++ b/src/extras/Rope.js @@ -10,7 +10,7 @@ * */ function Rope(texture, points) { - Strip.call( this, texture ); + Strip.call(this, texture); this.points = points; this.vertices = new Float32Array(points.length * 4); diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index 4830cd0..867ac89 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -147,6 +147,10 @@ return this._texture; }, set: function (value) { + if (this._texture === value) { + return; + } + this._texture = value; this.cachedTint = 0xFFFFFF; diff --git a/src/extras/Rope.js b/src/extras/Rope.js index 66c9800..82f312a 100644 --- a/src/extras/Rope.js +++ b/src/extras/Rope.js @@ -10,7 +10,7 @@ * */ function Rope(texture, points) { - Strip.call( this, texture ); + Strip.call(this, texture); this.points = points; this.vertices = new Float32Array(points.length * 4); diff --git a/src/extras/Strip.js b/src/extras/Strip.js index f39586d..44649bb 100644 --- a/src/extras/Strip.js +++ b/src/extras/Strip.js @@ -65,7 +65,13 @@ Strip.prototype.constructor = Strip; module.exports = Strip; -Strip.prototype._renderWebGL = function (renderSession) { +/** + * Renders the object using the WebGL renderer + * + * @param renderer {WebGLRenderer} + * @private + */ +Strip.prototype.renderWebGL = function (renderer) { // if the sprite is not visible or the alpha is 0 then no need to render this element if (!this.visible || this.alpha <= 0) { return; @@ -73,27 +79,27 @@ // render triangle strip.. - renderSession.spriteBatch.stop(); + renderer.spriteBatch.stop(); // init! init! if (!this._vertexBuffer) { - this._initWebGL(renderSession); + this._initWebGL(renderer); } - renderSession.shaderManager.setShader(renderSession.shaderManager.stripShader); + renderer.shaderManager.setShader(renderer.shaderManager.stripShader); - this._renderStrip(renderSession); + this._renderStrip(renderer); - ///renderSession.shaderManager.activateDefaultShader(); + ///renderer.shaderManager.activateDefaultShader(); - renderSession.spriteBatch.start(); + renderer.spriteBatch.start(); //TODO check culling }; -Strip.prototype._initWebGL = function (renderSession) { +Strip.prototype._initWebGL = function (renderer) { // build the strip! - var gl = renderSession.gl; + var gl = renderer.gl; this._vertexBuffer = gl.createBuffer(); this._indexBuffer = gl.createBuffer(); @@ -113,17 +119,17 @@ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); }; -Strip.prototype._renderStrip = function (renderSession) { - var gl = renderSession.gl; - var projection = renderSession.projection, - offset = renderSession.offset, - shader = renderSession.shaderManager.stripShader; +Strip.prototype._renderStrip = function (renderer) { + var gl = renderer.gl; + var projection = renderer.projection, + offset = renderer.offset, + shader = renderer.shaderManager.stripShader; var drawMode = this.drawMode === Strip.DrawModes.TRIANGLE_STRIP ? gl.TRIANGLE_STRIP : gl.TRIANGLES; // gl.uniformMatrix4fv(shaderProgram.mvMatrixUniform, false, mat4Real); - renderSession.blendModeManager.setBlendMode(this.blendMode); + renderer.blendModeManager.setBlendMode(this.blendMode); // set uniforms @@ -146,7 +152,7 @@ // check if a texture is dirty.. if (this.texture.baseTexture._dirty[gl.id]) { - renderSession.renderer.updateTexture(this.texture.baseTexture); + renderer.updateTexture(this.texture.baseTexture); } else { // bind the current texture @@ -174,7 +180,7 @@ // check if a texture is dirty.. if (this.texture.baseTexture._dirty[gl.id]) { - renderSession.renderer.updateTexture(this.texture.baseTexture); + renderer.updateTexture(this.texture.baseTexture); } else { gl.bindTexture(gl.TEXTURE_2D, this.texture.baseTexture._glTextures[gl.id]); @@ -193,14 +199,18 @@ }; - - -Strip.prototype._renderCanvas = function (renderSession) { - var context = renderSession.context; +/** + * Renders the object using the Canvas renderer + * + * @param renderer {CanvasRenderer} + * @private + */ +Strip.prototype._renderCanvas = function (renderer) { + var context = renderer.context; var transform = this.worldTransform; - if (renderSession.roundPixels) { + if (renderer.roundPixels) { context.setTransform(transform.a, transform.b, transform.c, transform.d, transform.tx | 0, transform.ty | 0); } else { diff --git a/src/core/display/Sprite.js b/src/core/display/Sprite.js index 4830cd0..867ac89 100644 --- a/src/core/display/Sprite.js +++ b/src/core/display/Sprite.js @@ -147,6 +147,10 @@ return this._texture; }, set: function (value) { + if (this._texture === value) { + return; + } + this._texture = value; this.cachedTint = 0xFFFFFF; diff --git a/src/extras/Rope.js b/src/extras/Rope.js index 66c9800..82f312a 100644 --- a/src/extras/Rope.js +++ b/src/extras/Rope.js @@ -10,7 +10,7 @@ * */ function Rope(texture, points) { - Strip.call( this, texture ); + Strip.call(this, texture); this.points = points; this.vertices = new Float32Array(points.length * 4); diff --git a/src/extras/Strip.js b/src/extras/Strip.js index f39586d..44649bb 100644 --- a/src/extras/Strip.js +++ b/src/extras/Strip.js @@ -65,7 +65,13 @@ Strip.prototype.constructor = Strip; module.exports = Strip; -Strip.prototype._renderWebGL = function (renderSession) { +/** + * Renders the object using the WebGL renderer + * + * @param renderer {WebGLRenderer} + * @private + */ +Strip.prototype.renderWebGL = function (renderer) { // if the sprite is not visible or the alpha is 0 then no need to render this element if (!this.visible || this.alpha <= 0) { return; @@ -73,27 +79,27 @@ // render triangle strip.. - renderSession.spriteBatch.stop(); + renderer.spriteBatch.stop(); // init! init! if (!this._vertexBuffer) { - this._initWebGL(renderSession); + this._initWebGL(renderer); } - renderSession.shaderManager.setShader(renderSession.shaderManager.stripShader); + renderer.shaderManager.setShader(renderer.shaderManager.stripShader); - this._renderStrip(renderSession); + this._renderStrip(renderer); - ///renderSession.shaderManager.activateDefaultShader(); + ///renderer.shaderManager.activateDefaultShader(); - renderSession.spriteBatch.start(); + renderer.spriteBatch.start(); //TODO check culling }; -Strip.prototype._initWebGL = function (renderSession) { +Strip.prototype._initWebGL = function (renderer) { // build the strip! - var gl = renderSession.gl; + var gl = renderer.gl; this._vertexBuffer = gl.createBuffer(); this._indexBuffer = gl.createBuffer(); @@ -113,17 +119,17 @@ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); }; -Strip.prototype._renderStrip = function (renderSession) { - var gl = renderSession.gl; - var projection = renderSession.projection, - offset = renderSession.offset, - shader = renderSession.shaderManager.stripShader; +Strip.prototype._renderStrip = function (renderer) { + var gl = renderer.gl; + var projection = renderer.projection, + offset = renderer.offset, + shader = renderer.shaderManager.stripShader; var drawMode = this.drawMode === Strip.DrawModes.TRIANGLE_STRIP ? gl.TRIANGLE_STRIP : gl.TRIANGLES; // gl.uniformMatrix4fv(shaderProgram.mvMatrixUniform, false, mat4Real); - renderSession.blendModeManager.setBlendMode(this.blendMode); + renderer.blendModeManager.setBlendMode(this.blendMode); // set uniforms @@ -146,7 +152,7 @@ // check if a texture is dirty.. if (this.texture.baseTexture._dirty[gl.id]) { - renderSession.renderer.updateTexture(this.texture.baseTexture); + renderer.updateTexture(this.texture.baseTexture); } else { // bind the current texture @@ -174,7 +180,7 @@ // check if a texture is dirty.. if (this.texture.baseTexture._dirty[gl.id]) { - renderSession.renderer.updateTexture(this.texture.baseTexture); + renderer.updateTexture(this.texture.baseTexture); } else { gl.bindTexture(gl.TEXTURE_2D, this.texture.baseTexture._glTextures[gl.id]); @@ -193,14 +199,18 @@ }; - - -Strip.prototype._renderCanvas = function (renderSession) { - var context = renderSession.context; +/** + * Renders the object using the Canvas renderer + * + * @param renderer {CanvasRenderer} + * @private + */ +Strip.prototype._renderCanvas = function (renderer) { + var context = renderer.context; var transform = this.worldTransform; - if (renderSession.roundPixels) { + if (renderer.roundPixels) { context.setTransform(transform.a, transform.b, transform.c, transform.d, transform.tx | 0, transform.ty | 0); } else { diff --git a/src/extras/TilingSprite.js b/src/extras/TilingSprite.js index 8c2e21c..02b325e 100644 --- a/src/extras/TilingSprite.js +++ b/src/extras/TilingSprite.js @@ -107,28 +107,31 @@ set: function (value) { this._height = value; } + }, + + texture: { + get: function () { + return this._texture; + }, + set: function (value) { + if (this._texture === value) { + return; + } + + this._texture = value; + this.refreshTexture = true; + this.cachedTint = 0xFFFFFF; + } } }); -TilingSprite.prototype.setTexture = function (texture) { - if (this.texture === texture) { - return; - } - - this.texture = texture; - - this.refreshTexture = true; - - this.cachedTint = 0xFFFFFF; -}; - /** * Renders the object using the WebGL renderer -* - * @param renderSession {RenderSession} + * + * @param renderer {WebGLRenderer} * @private */ -TilingSprite.prototype._renderWebGL = function (renderSession) { +TilingSprite.prototype.renderWebGL = function (renderer) { if (!this.visible || this.alpha <= 0) { return; } @@ -136,14 +139,14 @@ var i, j; if (this._mask) { - renderSession.spriteBatch.stop(); - renderSession.maskManager.pushMask(this.mask, renderSession); - renderSession.spriteBatch.start(); + renderer.spriteBatch.stop(); + renderer.maskManager.pushMask(this.mask, renderer); + renderer.spriteBatch.start(); } if (this._filters) { - renderSession.spriteBatch.flush(); - renderSession.filterManager.pushFilter(this._filterBlock); + renderer.spriteBatch.flush(); + renderer.filterManager.pushFilter(this._filterBlock); } @@ -153,47 +156,47 @@ if (this.tilingTexture && this.tilingTexture.needsUpdate) { //TODO - tweaking - updateWebGLTexture(this.tilingTexture.baseTexture, renderSession.gl); + updateWebGLTexture(this.tilingTexture.baseTexture, renderer.gl); this.tilingTexture.needsUpdate = false; // this.tilingTexture._uvs = null; } } else { - renderSession.spriteBatch.renderTilingSprite(this); + renderer.spriteBatch.renderTilingSprite(this); } // simple render children! for (i=0,j=this.children.length; i