UNPKG

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 3.37 kB
{"version":3,"file":"generateParticleUpdatePolyfill.mjs","sources":["../../../src/unsafe-eval/particle/generateParticleUpdatePolyfill.ts"],"sourcesContent":["import { getAttributeInfoFromFormat } from '../../rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat';\nimport { particleUpdateFunctions } from './particleUpdateFunctions';\n\nimport type { IParticle } from '../../scene/particle-container/shared/Particle';\nimport type { ParticleRendererProperty } from '../../scene/particle-container/shared/particleData';\n\n// eslint-disable-next-line max-len\ntype ParticleUpdateFunction = (ps: IParticle[], f32v: Float32Array, u32v: Uint32Array, offset: number, stride: number) => void;\n\n/**\n * @param properties\n * @internal\n */\nexport function generateParticleUpdatePolyfill(properties: ParticleRendererProperty[])\n{\n const dynamicProperties = properties.filter((p) => p.dynamic);\n const staticProperties = properties.filter((p) => !p.dynamic);\n\n return {\n dynamicUpdate: generateUpdateFunction(dynamicProperties),\n staticUpdate: generateUpdateFunction(staticProperties),\n };\n}\n\nfunction generateUpdateFunction(properties: ParticleRendererProperty[]): ParticleUpdateFunction\n{\n let stride = 0;\n\n const updateData: { stride: number; updateFunction: ParticleUpdateFunction }[] = [];\n\n for (let i = 0; i < properties.length; i++)\n {\n const property = properties[i];\n\n const attributeStride = getAttributeInfoFromFormat(property.format).stride / 4;\n\n stride += attributeStride;\n\n updateData.push({\n stride: attributeStride,\n updateFunction:\n property.updateFunction\n || particleUpdateFunctions[property.attributeName as keyof typeof particleUpdateFunctions]\n });\n }\n\n return (ps: IParticle[], f32v: Float32Array, u32v: Uint32Array) =>\n {\n let offset = 0;\n\n for (let i = 0; i < updateData.length; i++)\n {\n const obx = updateData[i];\n\n obx.updateFunction(ps, f32v, u32v, offset, stride);\n offset += obx.stride;\n }\n };\n}\n"],"names":[],"mappings":";;;;AAaO,SAAS,+BAA+B,UAC/C,EAAA;AACI,EAAA,MAAM,oBAAoB,UAAW,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA,CAAA;AAC5D,EAAA,MAAM,mBAAmB,UAAW,CAAA,MAAA,CAAO,CAAC,CAAM,KAAA,CAAC,EAAE,OAAO,CAAA,CAAA;AAE5D,EAAO,OAAA;AAAA,IACH,aAAA,EAAe,uBAAuB,iBAAiB,CAAA;AAAA,IACvD,YAAA,EAAc,uBAAuB,gBAAgB,CAAA;AAAA,GACzD,CAAA;AACJ,CAAA;AAEA,SAAS,uBAAuB,UAChC,EAAA;AACI,EAAA,IAAI,MAAS,GAAA,CAAA,CAAA;AAEb,EAAA,MAAM,aAA2E,EAAC,CAAA;AAElF,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,UAAA,CAAW,QAAQ,CACvC,EAAA,EAAA;AACI,IAAM,MAAA,QAAA,GAAW,WAAW,CAAC,CAAA,CAAA;AAE7B,IAAA,MAAM,eAAkB,GAAA,0BAAA,CAA2B,QAAS,CAAA,MAAM,EAAE,MAAS,GAAA,CAAA,CAAA;AAE7E,IAAU,MAAA,IAAA,eAAA,CAAA;AAEV,IAAA,UAAA,CAAW,IAAK,CAAA;AAAA,MACZ,MAAQ,EAAA,eAAA;AAAA,MACR,cACA,EAAA,QAAA,CAAS,cACN,IAAA,uBAAA,CAAwB,SAAS,aAAqD,CAAA;AAAA,KAC5F,CAAA,CAAA;AAAA,GACL;AAEA,EAAO,OAAA,CAAC,EAAiB,EAAA,IAAA,EAAoB,IAC7C,KAAA;AACI,IAAA,IAAI,MAAS,GAAA,CAAA,CAAA;AAEb,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,UAAA,CAAW,QAAQ,CACvC,EAAA,EAAA;AACI,MAAM,MAAA,GAAA,GAAM,WAAW,CAAC,CAAA,CAAA;AAExB,MAAA,GAAA,CAAI,cAAe,CAAA,EAAA,EAAI,IAAM,EAAA,IAAA,EAAM,QAAQ,MAAM,CAAA,CAAA;AACjD,MAAA,MAAA,IAAU,GAAI,CAAA,MAAA,CAAA;AAAA,KAClB;AAAA,GACJ,CAAA;AACJ;;;;"}