1 line
7.0 KiB
Plaintext
1 line
7.0 KiB
Plaintext
{"version":3,"file":"NineSliceSpritePipe.mjs","sources":["../../../src/scene/sprite-nine-slice/NineSliceSpritePipe.ts"],"sourcesContent":["import { ExtensionType } from '../../extensions/Extensions';\nimport { BigPool } from '../../utils/pool/PoolGroup';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh';\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 { PoolItem } from '../../utils/pool/Pool';\nimport type { Container } from '../container/Container';\nimport type { NineSliceSprite } from './NineSliceSprite';\n\nexport class NineSliceSpritePipe implements RenderPipe<NineSliceSprite>\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'nineSliceSprite',\n } as const;\n\n private readonly _renderer: Renderer;\n private readonly _gpuSpriteHash: Record<number, BatchableMesh> = Object.create(null);\n private readonly _destroyRenderableBound = this.destroyRenderable.bind(this) as (renderable: Container) => void;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public addRenderable(sprite: NineSliceSprite, instructionSet: InstructionSet)\n {\n const gpuSprite = this._getGpuSprite(sprite);\n\n if (sprite._didSpriteUpdate) 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._gpuSpriteHash[sprite.uid];\n\n if (sprite._didSpriteUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n\n gpuSprite._batcher.updateElement(gpuSprite);\n }\n\n public validateRenderable(sprite: NineSliceSprite): boolean\n {\n const texture = sprite._texture;\n const gpuSprite = this._getGpuSprite(sprite);\n\n if (gpuSprite.texture._source !== texture._source)\n {\n return !gpuSprite._batcher.checkAndUpdateTexture(gpuSprite, texture);\n }\n\n return false;\n }\n\n public destroyRenderable(sprite: NineSliceSprite)\n {\n const batchableMesh = this._gpuSpriteHash[sprite.uid];\n\n // this will call reset!\n BigPool.return(batchableMesh.geometry as PoolItem);\n BigPool.return(batchableMesh as PoolItem);\n\n this._gpuSpriteHash[sprite.uid] = null;\n\n sprite.off('destroyed', this._destroyRenderableBound);\n }\n\n private _updateBatchableSprite(sprite: NineSliceSprite, batchableSprite: BatchableMesh)\n {\n sprite._didSpriteUpdate = false;\n (batchableSprite.geometry as NineSliceGeometry)\n .update(sprite);\n\n // = sprite.bounds;\n batchableSprite.texture = sprite._texture;\n }\n\n private _getGpuSprite(sprite: NineSliceSprite): BatchableMesh\n {\n return this._gpuSpriteHash[sprite.uid] || this._initGPUSprite(sprite);\n }\n\n private _initGPUSprite(sprite: NineSliceSprite): BatchableMesh\n {\n const batchableMesh = BigPool.get(BatchableMesh);\n\n batchableMesh.geometry = BigPool.get(NineSliceGeometry);\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 sprite._didSpriteUpdate = true;\n\n this._gpuSpriteHash[sprite.uid] = batchableMesh;\n\n // TODO perhaps manage this outside this pipe? (a bit like how we update / add)\n sprite.on('destroyed', this._destroyRenderableBound);\n\n return batchableMesh;\n }\n\n public destroy()\n {\n for (const i in this._gpuSpriteHash)\n {\n const batchableMesh = this._gpuSpriteHash[i];\n\n batchableMesh.geometry.destroy();\n }\n\n (this._gpuSpriteHash as null) = null;\n (this._renderer as null) = null;\n }\n}\n"],"names":[],"mappings":"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"} |