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">

74 lines (71 loc) 2.43 kB
import { ExtensionType } from '../../extensions/Extensions.mjs'; import { GCManagedHash } from '../../utils/data/GCManagedHash.mjs'; import { BatchableMesh } from '../mesh/shared/BatchableMesh.mjs'; import { NineSliceGeometry } from './NineSliceGeometry.mjs'; "use strict"; class NineSliceSpriteGpuData extends BatchableMesh { constructor() { super(); this.geometry = new NineSliceGeometry(); } destroy() { this.geometry.destroy(); } } class NineSliceSpritePipe { constructor(renderer) { this._renderer = renderer; this._managedSprites = new GCManagedHash({ renderer, type: "renderable", name: "nineSliceSprite" }); } addRenderable(sprite, instructionSet) { const gpuSprite = this._getGpuSprite(sprite); if (sprite.didViewUpdate) this._updateBatchableSprite(sprite, gpuSprite); this._renderer.renderPipes.batch.addToBatch(gpuSprite, instructionSet); } updateRenderable(sprite) { const gpuSprite = this._getGpuSprite(sprite); if (sprite.didViewUpdate) this._updateBatchableSprite(sprite, gpuSprite); gpuSprite._batcher.updateElement(gpuSprite); } validateRenderable(sprite) { const gpuSprite = this._getGpuSprite(sprite); return !gpuSprite._batcher.checkAndUpdateTexture( gpuSprite, sprite._texture ); } _updateBatchableSprite(sprite, batchableSprite) { batchableSprite.geometry.update(sprite); batchableSprite.setTexture(sprite._texture); } _getGpuSprite(sprite) { return sprite._gpuData[this._renderer.uid] || this._initGPUSprite(sprite); } _initGPUSprite(sprite) { const gpuData = sprite._gpuData[this._renderer.uid] = new NineSliceSpriteGpuData(); const batchableMesh = gpuData; batchableMesh.renderable = sprite; batchableMesh.transform = sprite.groupTransform; batchableMesh.texture = sprite._texture; batchableMesh.roundPixels = this._renderer._roundPixels | sprite._roundPixels; this._managedSprites.add(sprite); if (!sprite.didViewUpdate) { this._updateBatchableSprite(sprite, batchableMesh); } return gpuData; } destroy() { this._managedSprites.destroy(); this._renderer = null; } } /** @ignore */ NineSliceSpritePipe.extension = { type: [ ExtensionType.WebGLPipes, ExtensionType.WebGPUPipes ], name: "nineSliceSprite" }; export { NineSliceSpriteGpuData, NineSliceSpritePipe }; //# sourceMappingURL=NineSliceSpritePipe.mjs.map