@pixi/utils
Version:
Collection of utilities used by PixiJS
1 lines • 3.05 kB
Source Map (JSON)
{"version":3,"file":"interleaveTypedArrays.mjs","sources":["../../src/data/interleaveTypedArrays.ts"],"sourcesContent":["import { getBufferType } from './getBufferType';\n\n/* eslint-disable object-shorthand */\nconst map = { Float32Array: Float32Array, Uint32Array: Uint32Array, Int32Array: Int32Array, Uint8Array: Uint8Array };\n\ntype PackedArray = Float32Array | Uint32Array | Int32Array | Uint8Array;\n\nexport function interleaveTypedArrays(arrays: PackedArray[], sizes: number[]): Float32Array\n{\n let outSize = 0;\n let stride = 0;\n const views: {[key: string]: PackedArray} = {};\n\n for (let i = 0; i < arrays.length; i++)\n {\n stride += sizes[i];\n outSize += arrays[i].length;\n }\n\n const buffer = new ArrayBuffer(outSize * 4);\n\n let out = null;\n let littleOffset = 0;\n\n for (let i = 0; i < arrays.length; i++)\n {\n const size = sizes[i];\n const array = arrays[i];\n\n /*\n @todo This is unsafe casting but consistent with how the code worked previously. Should it stay this way\n or should and `getBufferTypeUnsafe` function be exposed that throws an Error if unsupported type is passed?\n */\n const type = getBufferType(array) as keyof typeof map;\n\n if (!views[type])\n {\n views[type] = new map[type](buffer);\n }\n\n out = views[type];\n\n for (let j = 0; j < array.length; j++)\n {\n const indexStart = ((j / size | 0) * stride) + littleOffset;\n const index = j % size;\n\n out[indexStart + index] = array[j];\n }\n\n littleOffset += size;\n }\n\n return new Float32Array(buffer);\n}\n"],"names":[],"mappings":";;AAGA,MAAM,GAAM,GAAA,EAAE,YAA4B,EAAA,WAAA,EAA0B,YAAwB,UAAuB,EAAA,CAAA;AAI5G,SAAA,qBAAA,CAA+B,QAAuB,KAC7D,EAAA;AACI,EAAA,IAAI,OAAU,GAAA,CAAA,CAAA;AACd,EAAA,IAAI,MAAS,GAAA,CAAA,CAAA;AACb,EAAA,MAAM,QAAsC,EAAC,CAAA;AAE7C,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,CAAO,QAAQ,CACnC,EAAA,EAAA;AACI,IAAA,MAAA,IAAU,KAAM,CAAA,CAAA,CAAA,CAAA;AAChB,IAAA,OAAA,IAAW,OAAO,CAAG,CAAA,CAAA,MAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,MAAS,GAAA,IAAI,WAAY,CAAA,OAAA,GAAU,CAAC,CAAA,CAAA;AAE1C,EAAA,IAAI,GAAM,GAAA,IAAA,CAAA;AACV,EAAA,IAAI,YAAe,GAAA,CAAA,CAAA;AAEnB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,CAAO,QAAQ,CACnC,EAAA,EAAA;AACI,IAAA,MAAM,OAAO,KAAM,CAAA,CAAA,CAAA,CAAA;AACnB,IAAA,MAAM,QAAQ,MAAO,CAAA,CAAA,CAAA,CAAA;AAMrB,IAAM,MAAA,IAAA,GAAO,cAAc,KAAK,CAAA,CAAA;AAEhC,IAAI,IAAA,CAAC,MAAM,IACX,CAAA,EAAA;AACI,MAAA,KAAA,CAAM,IAAQ,CAAA,GAAA,IAAI,GAAI,CAAA,IAAA,CAAA,CAAM,MAAM,CAAA,CAAA;AAAA,KACtC;AAEA,IAAA,GAAA,GAAM,KAAM,CAAA,IAAA,CAAA,CAAA;AAEZ,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAClC,EAAA,EAAA;AACI,MAAA,MAAM,UAAe,GAAA,CAAA,CAAA,GAAI,IAAO,GAAA,CAAA,IAAK,MAAU,GAAA,YAAA,CAAA;AAC/C,MAAA,MAAM,QAAQ,CAAI,GAAA,IAAA,CAAA;AAElB,MAAI,GAAA,CAAA,UAAA,GAAa,SAAS,KAAM,CAAA,CAAA,CAAA,CAAA;AAAA,KACpC;AAEA,IAAgB,YAAA,IAAA,IAAA,CAAA;AAAA,GACpB;AAEA,EAAO,OAAA,IAAI,aAAa,MAAM,CAAA,CAAA;AAClC;;;;"}