UNPKG

5.78 kBSource Map (JSON)View Raw
1{"version":3,"file":"ArrayResource.mjs","sources":["../../../src/textures/resources/ArrayResource.ts"],"sourcesContent":["import { TARGETS } from '@pixi/constants';\nimport { AbstractMultiResource } from './AbstractMultiResource';\n\nimport type { ISize } from '@pixi/math';\nimport type { Renderer } from '../../Renderer';\nimport type { BaseTexture } from '../BaseTexture';\nimport type { GLTexture } from '../GLTexture';\nimport type { BaseImageResource } from './BaseImageResource';\n\n/**\n * A resource that contains a number of sources.\n * @memberof PIXI\n */\nexport class ArrayResource extends AbstractMultiResource\n{\n /**\n * @param source - Number of items in array or the collection\n * of image URLs to use. Can also be resources, image elements, canvas, etc.\n * @param options - Options to apply to {@link PIXI.autoDetectResource}\n * @param {number} [options.width] - Width of the resource\n * @param {number} [options.height] - Height of the resource\n */\n constructor(source: number | Array<any>, options?: ISize)\n {\n const { width, height } = options || {};\n\n let urls;\n let length: number;\n\n if (Array.isArray(source))\n {\n urls = source;\n length = source.length;\n }\n else\n {\n length = source;\n }\n\n super(length, { width, height });\n\n if (urls)\n {\n this.initFromArray(urls, options);\n }\n }\n\n /**\n * Set a baseTexture by ID,\n * ArrayResource just takes resource from it, nothing more\n * @param baseTexture\n * @param index - Zero-based index of resource to set\n * @returns - Instance for chaining\n */\n addBaseTextureAt(baseTexture: BaseTexture, index: number): this\n {\n if (baseTexture.resource)\n {\n this.addResourceAt(baseTexture.resource, index);\n }\n else\n {\n throw new Error('ArrayResource does not support RenderTexture');\n }\n\n return this;\n }\n\n /**\n * Add binding\n * @param baseTexture\n */\n bind(baseTexture: BaseTexture): void\n {\n super.bind(baseTexture);\n\n baseTexture.target = TARGETS.TEXTURE_2D_ARRAY;\n }\n\n /**\n * Upload the resources to the GPU.\n * @param renderer\n * @param texture\n * @param glTexture\n * @returns - whether texture was uploaded\n */\n upload(renderer: Renderer, texture: BaseTexture, glTexture: GLTexture): boolean\n {\n const { length, itemDirtyIds, items } = this;\n const { gl } = renderer;\n\n if (glTexture.dirtyId < 0)\n {\n gl.texImage3D(\n gl.TEXTURE_2D_ARRAY,\n 0,\n glTexture.internalFormat,\n this._width,\n this._height,\n length,\n 0,\n texture.format,\n glTexture.type,\n null\n );\n }\n\n for (let i = 0; i < length; i++)\n {\n const item = items[i];\n\n if (itemDirtyIds[i] < item.dirtyId)\n {\n itemDirtyIds[i] = item.dirtyId;\n if (item.valid)\n {\n gl.texSubImage3D(\n gl.TEXTURE_2D_ARRAY,\n 0,\n 0, // xoffset\n 0, // yoffset\n i, // zoffset\n item.resource.width,\n item.resource.height,\n 1,\n texture.format,\n glTexture.type,\n (item.resource as BaseImageResource).source\n );\n }\n }\n }\n\n return true;\n }\n}\n"],"names":[],"mappings":";;;AAaO,MAAM,sBAAsB,qBACnC,CAAA;AAAA,EAQI,WAAA,CAAY,QAA6B,OACzC,EAAA;AACI,IAAA,MAAM,EAAE,KAAA,EAAO,MAAW,EAAA,GAAA,OAAA,IAAW,EAAC,CAAA;AAEtC,IAAI,IAAA,IAAA,CAAA;AACJ,IAAI,IAAA,MAAA,CAAA;AAEJ,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,MAAM,CACxB,EAAA;AACI,MAAO,IAAA,GAAA,MAAA,CAAA;AACP,MAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAA;AAAA,KAGpB,MAAA;AACI,MAAS,MAAA,GAAA,MAAA,CAAA;AAAA,KACb;AAEA,IAAA,KAAA,CAAM,MAAQ,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,CAAA,CAAA;AAE/B,IAAA,IAAI,IACJ,EAAA;AACI,MAAK,IAAA,CAAA,aAAA,CAAc,MAAM,OAAO,CAAA,CAAA;AAAA,KACpC;AAAA,GACJ;AAAA,EASA,gBAAA,CAAiB,aAA0B,KAC3C,EAAA;AACI,IAAA,IAAI,YAAY,QAChB,EAAA;AACI,MAAK,IAAA,CAAA,aAAA,CAAc,WAAY,CAAA,QAAA,EAAU,KAAK,CAAA,CAAA;AAAA,KAGlD,MAAA;AACI,MAAM,MAAA,IAAI,MAAM,8CAA8C,CAAA,CAAA;AAAA,KAClE;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACX;AAAA,EAMA,KAAK,WACL,EAAA;AACI,IAAA,KAAA,CAAM,KAAK,WAAW,CAAA,CAAA;AAEtB,IAAA,WAAA,CAAY,SAAS,OAAQ,CAAA,gBAAA,CAAA;AAAA,GACjC;AAAA,EASA,MAAA,CAAO,QAAoB,EAAA,OAAA,EAAsB,SACjD,EAAA;AACI,IAAM,MAAA,EAAE,MAAQ,EAAA,YAAA,EAAc,KAAU,EAAA,GAAA,IAAA,CAAA;AACxC,IAAA,MAAM,EAAE,EAAO,EAAA,GAAA,QAAA,CAAA;AAEf,IAAI,IAAA,SAAA,CAAU,UAAU,CACxB,EAAA;AACI,MAAA,EAAA,CAAG,WACC,EAAG,CAAA,gBAAA,EACH,CACA,EAAA,SAAA,CAAU,gBACV,IAAK,CAAA,MAAA,EACL,IAAK,CAAA,OAAA,EACL,QACA,CACA,EAAA,OAAA,CAAQ,MACR,EAAA,SAAA,CAAU,MACV,IACJ,CAAA,CAAA;AAAA,KACJ;AAEA,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,EAAQ,CAC5B,EAAA,EAAA;AACI,MAAA,MAAM,OAAO,KAAM,CAAA,CAAA,CAAA,CAAA;AAEnB,MAAI,IAAA,YAAA,CAAa,CAAK,CAAA,GAAA,IAAA,CAAK,OAC3B,EAAA;AACI,QAAA,YAAA,CAAa,KAAK,IAAK,CAAA,OAAA,CAAA;AACvB,QAAA,IAAI,KAAK,KACT,EAAA;AACI,UAAG,EAAA,CAAA,aAAA,CACC,GAAG,gBACH,EAAA,CAAA,EACA,GACA,CACA,EAAA,CAAA,EACA,KAAK,QAAS,CAAA,KAAA,EACd,KAAK,QAAS,CAAA,MAAA,EACd,GACA,OAAQ,CAAA,MAAA,EACR,UAAU,IACT,EAAA,IAAA,CAAK,SAA+B,MACzC,CAAA,CAAA;AAAA,SACJ;AAAA,OACJ;AAAA,KACJ;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACX;AACJ;;;;"}
\No newline at end of file