UNPKG

@pixi/utils

Version:

Collection of utilities used by PixiJS

1 lines 2.4 kB
{"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,MAAM,EAAE,cAA4B,aAA0B,YAAwB,WAAuB;AAInG,SAAA,sBAAsB,QAAuB,OAC7D;AACQ,MAAA,UAAU,GACV,SAAS;AACb,QAAM,QAAsC,CAAA;AAE5C,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ;AAE/B,cAAU,MAAM,CAAC,GACjB,WAAW,OAAO,CAAC,EAAE;AAGzB,QAAM,SAAS,IAAI,YAAY,UAAU,CAAC;AAEtC,MAAA,MAAM,MACN,eAAe;AAEnB,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KACnC;AACU,UAAA,OAAO,MAAM,CAAC,GACd,QAAQ,OAAO,CAAC,GAMhB,OAAO,cAAc,KAAK;AAE3B,UAAM,IAAI,MAEX,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,MAAM,IAGtC,MAAM,MAAM,IAAI;AAEhB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAClC;AACI,YAAM,cAAe,IAAI,OAAO,KAAK,SAAU,cACzC,QAAQ,IAAI;AAElB,UAAI,aAAa,KAAK,IAAI,MAAM,CAAC;AAAA,IACrC;AAEgB,oBAAA;AAAA,EACpB;AAEO,SAAA,IAAI,aAAa,MAAM;AAClC;"}