var ContainerWebGLRenderer = function (renderer, container, interpolationPercentage, camera, parentMatrix){ var children = container.list; if (_AN_Read_length('length', children) === 0) { return ; } var transformMatrix = container.localTransform; if (parentMatrix) { transformMatrix.loadIdentity(); transformMatrix.multiply(parentMatrix); transformMatrix.translate(container.x, container.y); transformMatrix.rotate(container.rotation); transformMatrix.scale(container.scaleX, container.scaleY); } else { transformMatrix.applyITRS(container.x, container.y, container.rotation, container.scaleX, container.scaleY); } var containerHasBlendMode = (container.blendMode !== -1); if (!containerHasBlendMode) { renderer.setBlendMode(0); } var alphaTopLeft = container.alphaTopLeft; var alphaTopRight = container.alphaTopRight; var alphaBottomLeft = container.alphaBottomLeft; var alphaBottomRight = container.alphaBottomRight; var scrollFactorX = container.scrollFactorX; var scrollFactorY = container.scrollFactorY; var list = children; var childCount = _AN_Read_length('length', children); var current = renderer.mask; for (var i = 0; i < childCount; i++ ){ var child = children[i]; if (!child.willRender(camera)) { continue ; } var childAlphaTopLeft; var childAlphaTopRight; var childAlphaBottomLeft; var childAlphaBottomRight; if (child.alphaTopLeft !== undefined) { childAlphaTopLeft = child.alphaTopLeft; childAlphaTopRight = child.alphaTopRight; childAlphaBottomLeft = child.alphaBottomLeft; childAlphaBottomRight = child.alphaBottomRight; } else { var childAlpha = child.alpha; childAlphaTopLeft = childAlpha; childAlphaTopRight = childAlpha; childAlphaBottomLeft = childAlpha; childAlphaBottomRight = childAlpha; } var childScrollFactorX = child.scrollFactorX; var childScrollFactorY = child.scrollFactorY; if (!containerHasBlendMode && child.blendMode !== renderer.currentBlendMode) { renderer.setBlendMode(child.blendMode); } var mask = child.mask; current = renderer.currentMask; if (current.mask && current.mask !== mask) { current.mask.postRenderWebGL(renderer, current.camera); } if (mask && current.mask !== mask) { mask.preRenderWebGL(renderer, child, camera); } var type = child.type; if (type !== renderer.currentType) { renderer.newType = true ; renderer.currentType = type; } renderer.nextTypeMatch = (i < childCount - 1)? (list[i + 1].type === renderer.currentType): false ; child.setScrollFactor(childScrollFactorX * scrollFactorX, childScrollFactorY * scrollFactorY); child.setAlpha(childAlphaTopLeft * alphaTopLeft, childAlphaTopRight * alphaTopRight, childAlphaBottomLeft * alphaBottomLeft, childAlphaBottomRight * alphaBottomRight); child.renderWebGL(renderer, child, interpolationPercentage, camera, transformMatrix); child.setAlpha(childAlphaTopLeft, childAlphaTopRight, childAlphaBottomLeft, childAlphaBottomRight); child.setScrollFactor(childScrollFactorX, childScrollFactorY); renderer.newType = false ; } } ; module.exports = ContainerWebGLRenderer;