diff --git a/src/core/sprites/canvas/CanvasSpriteRenderer.js b/src/core/sprites/canvas/CanvasSpriteRenderer.js index d2ab0c4..15820c0 100644 --- a/src/core/sprites/canvas/CanvasSpriteRenderer.js +++ b/src/core/sprites/canvas/CanvasSpriteRenderer.js @@ -126,7 +126,7 @@ if (sprite.tint !== 0xFFFFFF) { - if (sprite.cachedTint !== sprite.tint) + if (sprite.cachedTint !== sprite.tint || sprite.tintedTexture.tintId !== sprite._texture._updateID) { sprite.cachedTint = sprite.tint; diff --git a/src/core/sprites/canvas/CanvasSpriteRenderer.js b/src/core/sprites/canvas/CanvasSpriteRenderer.js index d2ab0c4..15820c0 100644 --- a/src/core/sprites/canvas/CanvasSpriteRenderer.js +++ b/src/core/sprites/canvas/CanvasSpriteRenderer.js @@ -126,7 +126,7 @@ if (sprite.tint !== 0xFFFFFF) { - if (sprite.cachedTint !== sprite.tint) + if (sprite.cachedTint !== sprite.tint || sprite.tintedTexture.tintId !== sprite._texture._updateID) { sprite.cachedTint = sprite.tint; diff --git a/src/core/sprites/canvas/CanvasTinter.js b/src/core/sprites/canvas/CanvasTinter.js index fd9de5d..af018d4 100644 --- a/src/core/sprites/canvas/CanvasTinter.js +++ b/src/core/sprites/canvas/CanvasTinter.js @@ -26,17 +26,28 @@ texture.tintCache = texture.tintCache || {}; - if (texture.tintCache[stringColor]) + const cachedTexture = texture.tintCache[stringColor]; + + let canvas; + + if (cachedTexture) { - return texture.tintCache[stringColor]; + if (cachedTexture.tintId === texture._updateID) + { + return texture.tintCache[stringColor]; + } + + canvas = texture.tintCache[stringColor]; + } + else + { + canvas = CanvasTinter.canvas || document.createElement('canvas'); } - // clone texture.. - const canvas = CanvasTinter.canvas || document.createElement('canvas'); - - // CanvasTinter.tintWithPerPixel(texture, stringColor, canvas); CanvasTinter.tintMethod(texture, color, canvas); + canvas.tintId = texture._updateID; + if (CanvasTinter.convertTintToImage) { // is this better?