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 • 6.1 kB
Source Map (JSON)
{"version":3,"file":"NineSliceSpritePipe.mjs","sources":["../../../src/scene/sprite-nine-slice/NineSliceSpritePipe.ts"],"sourcesContent":["import { ExtensionType } from '../../extensions/Extensions';\nimport { GCManagedHash } from '../../utils/data/GCManagedHash';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh';\nimport { type GPUData } from '../view/ViewContainer';\nimport { NineSliceGeometry } from './NineSliceGeometry';\n\nimport type { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { RenderPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { NineSliceSprite } from './NineSliceSprite';\n\n/**\n * GPU data for NineSliceSprite.\n * @internal\n */\nexport class NineSliceSpriteGpuData extends BatchableMesh implements GPUData\n{\n constructor()\n {\n super();\n this.geometry = new NineSliceGeometry();\n }\n\n public destroy()\n {\n this.geometry.destroy();\n }\n}\n\n/**\n * The NineSliceSpritePipe is a render pipe for rendering NineSliceSprites.\n * @internal\n */\nexport class NineSliceSpritePipe implements RenderPipe<NineSliceSprite>\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ],\n name: 'nineSliceSprite',\n } as const;\n\n private readonly _renderer: Renderer;\n private readonly _managedSprites: GCManagedHash<NineSliceSprite>;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n this._managedSprites = new GCManagedHash({ renderer, type: 'renderable', name: 'nineSliceSprite' });\n }\n\n public addRenderable(sprite: NineSliceSprite, instructionSet: InstructionSet)\n {\n const gpuSprite = this._getGpuSprite(sprite);\n\n if (sprite.didViewUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n\n this._renderer.renderPipes.batch.addToBatch(gpuSprite, instructionSet);\n }\n\n public updateRenderable(sprite: NineSliceSprite)\n {\n const gpuSprite = this._getGpuSprite(sprite);\n\n if (sprite.didViewUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n\n gpuSprite._batcher.updateElement(gpuSprite);\n }\n\n public validateRenderable(sprite: NineSliceSprite): boolean\n {\n const gpuSprite = this._getGpuSprite(sprite);\n\n return !gpuSprite._batcher.checkAndUpdateTexture(\n gpuSprite,\n sprite._texture\n );\n }\n\n private _updateBatchableSprite(sprite: NineSliceSprite, batchableSprite: BatchableMesh)\n {\n (batchableSprite.geometry as NineSliceGeometry)\n .update(sprite);\n\n // = sprite.bounds;\n batchableSprite.setTexture(sprite._texture);\n }\n\n private _getGpuSprite(sprite: NineSliceSprite): NineSliceSpriteGpuData\n {\n return sprite._gpuData[this._renderer.uid] || this._initGPUSprite(sprite);\n }\n\n private _initGPUSprite(sprite: NineSliceSprite): NineSliceSpriteGpuData\n {\n const gpuData = sprite._gpuData[this._renderer.uid] = new NineSliceSpriteGpuData();\n\n const batchableMesh = gpuData;\n\n batchableMesh.renderable = sprite;\n batchableMesh.transform = sprite.groupTransform;\n batchableMesh.texture = sprite._texture;\n batchableMesh.roundPixels = (this._renderer._roundPixels | sprite._roundPixels) as 0 | 1;\n\n this._managedSprites.add(sprite);\n\n // if the sprite has not been updated by the view, we need to update the batchable mesh now.\n if (!sprite.didViewUpdate)\n {\n this._updateBatchableSprite(sprite, batchableMesh);\n }\n\n return gpuData;\n }\n\n public destroy()\n {\n this._managedSprites.destroy();\n (this._renderer as null) = null;\n }\n}\n"],"names":[],"mappings":"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"}