pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
1 lines • 5.88 kB
Source Map (JSON)
{"version":3,"file":"CanvasParticleContainerAdaptor.mjs","sources":["../../../../src/scene/particle-container/canvas/CanvasParticleContainerAdaptor.ts"],"sourcesContent":["import { canvasUtils } from '../../../rendering/renderers/canvas/utils/canvasUtils';\n\nimport type { CanvasRenderer } from '../../../rendering/renderers/canvas/CanvasRenderer';\nimport type { ParticleContainer } from '../shared/ParticleContainer';\nimport type { ParticleContainerAdaptor, ParticleContainerPipe } from '../shared/ParticleContainerPipe';\n\n/**\n * A Canvas adaptor for the ParticleContainer that renders particles using Canvas2D.\n * @internal\n */\nexport class CanvasParticleContainerAdaptor implements ParticleContainerAdaptor\n{\n public execute(particleContainerPipe: ParticleContainerPipe, container: ParticleContainer)\n {\n const renderer = particleContainerPipe.renderer as CanvasRenderer;\n const context = renderer.canvasContext.activeContext;\n const children = container.particleChildren;\n const texture = container.texture;\n\n context.save();\n renderer.canvasContext.setContextTransform(container.worldTransform, container.roundPixels);\n renderer.canvasContext.setBlendMode(container.groupBlendMode);\n\n const groupColorAlpha = container.groupColorAlpha;\n const filterAlpha = (renderer.filter as { alphaMultiplier?: number } | null)?.alphaMultiplier ?? 1;\n const groupAlpha = (((groupColorAlpha >>> 24) & 0xFF) / 255) * filterAlpha;\n\n for (let i = 0; i < children.length; i++)\n {\n const particle = children[i];\n const pTexture = particle.texture || texture;\n\n if (!pTexture?.source?.resource) continue;\n\n const color = particle.color;\n const alpha = (((color >>> 24) & 0xFF) / 255) * groupAlpha;\n\n if (alpha <= 0) continue;\n\n const bgr = color & 0xFFFFFF;\n const tint = ((bgr & 0xFF) << 16) + (bgr & 0xFF00) + ((bgr >> 16) & 0xFF);\n\n let drawSource: CanvasImageSource = pTexture.source.resource as CanvasImageSource;\n\n if (tint !== 0xFFFFFF)\n {\n drawSource = canvasUtils.getTintedCanvas({ texture: pTexture }, tint) as CanvasImageSource;\n }\n\n const frame = pTexture.frame;\n const resolution = pTexture.source.resolution;\n\n const sx = frame.x * resolution;\n const sy = frame.y * resolution;\n const sw = frame.width * resolution;\n const sh = frame.height * resolution;\n\n context.globalAlpha = alpha;\n\n const dx = -particle.anchorX * frame.width;\n const dy = -particle.anchorY * frame.height;\n\n if (particle.rotation !== 0 || particle.scaleX !== 1 || particle.scaleY !== 1)\n {\n context.save();\n context.translate(particle.x, particle.y);\n context.rotate(particle.rotation);\n context.scale(particle.scaleX, particle.scaleY);\n context.drawImage(drawSource, sx, sy, sw, sh, dx, dy, frame.width, frame.height);\n context.restore();\n }\n else\n {\n context.drawImage(drawSource, sx, sy, sw, sh, particle.x + dx, particle.y + dy, frame.width, frame.height);\n }\n }\n\n context.restore();\n }\n}\n"],"names":[],"mappings":"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"}