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.42 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: Record<string, ParticleRendererProperty>)\n{\n const allProperties = Object.values(properties);\n const dynamicProperties = allProperties.filter((p) => p.dynamic);\n const staticProperties = allProperties.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,UAAA,EAC/C;AACI,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAC9C,EAAA,MAAM,oBAAoB,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA;AAC/D,EAAA,MAAM,mBAAmB,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,EAAE,OAAO,CAAA;AAE/D,EAAA,OAAO;AAAA,IACH,aAAA,EAAe,uBAAuB,iBAAiB,CAAA;AAAA,IACvD,YAAA,EAAc,uBAAuB,gBAAgB;AAAA,GACzD;AACJ;AAEA,SAAS,uBAAuB,UAAA,EAChC;AACI,EAAA,IAAI,MAAA,GAAS,CAAA;AAEb,EAAA,MAAM,aAA2E,EAAC;AAElF,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EACvC;AACI,IAAA,MAAM,QAAA,GAAW,WAAW,CAAC,CAAA;AAE7B,IAAA,MAAM,eAAA,GAAkB,0BAAA,CAA2B,QAAA,CAAS,MAAM,EAAE,MAAA,GAAS,CAAA;AAE7E,IAAA,MAAA,IAAU,eAAA;AAEV,IAAA,UAAA,CAAW,IAAA,CAAK;AAAA,MACZ,MAAA,EAAQ,eAAA;AAAA,MACR,cAAA,EACA,QAAA,CAAS,cAAA,IACN,uBAAA,CAAwB,SAAS,aAAqD;AAAA,KAC5F,CAAA;AAAA,EACL;AAEA,EAAA,OAAO,CAAC,EAAA,EAAiB,IAAA,EAAoB,IAAA,KAC7C;AACI,IAAA,IAAI,MAAA,GAAS,CAAA;AAEb,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EACvC;AACI,MAAA,MAAM,GAAA,GAAM,WAAW,CAAC,CAAA;AAExB,MAAA,GAAA,CAAI,cAAA,CAAe,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM,QAAQ,MAAM,CAAA;AACjD,MAAA,MAAA,IAAU,GAAA,CAAI,MAAA;AAAA,IAClB;AAAA,EACJ,CAAA;AACJ;;;;"}