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

1 lines 7.53 kB
{"version":3,"file":"collectRenderablesMixin.mjs","sources":["../../../../src/scene/container/container-mixins/collectRenderablesMixin.ts"],"sourcesContent":["import { type InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet';\nimport { type InstructionPipe } from '../../../rendering/renderers/shared/instructions/RenderPipe';\nimport { type Renderer, type RenderPipes } from '../../../rendering/renderers/types';\nimport { type RenderLayer } from '../../layers/RenderLayer';\n\nimport type { Container } from '../Container';\n\n/**\n * The CollectRenderablesMixin interface defines methods for collecting renderable objects\n * from a container and its children. These methods add the renderables to an instruction set,\n * which is used by the renderer to process and display the scene.\n * @category scene\n * @internal\n */\nexport interface CollectRenderablesMixin\n{\n /**\n * Collects all renderables from the container and its children, adding them to the instruction set.\n * This method decides whether to use a simple or advanced collection method based on the container's properties.\n * @param {InstructionSet} instructionSet - The set of instructions to which the renderables will be added.\n * @param {Renderer} renderer - The renderer responsible for rendering the scene.\n * @param {RenderLayer} currentLayer - The current render layer being processed.\n * @internal\n */\n collectRenderables(instructionSet: InstructionSet, renderer: Renderer, currentLayer: RenderLayer): void;\n\n /**\n * Collects renderables using a simple method, suitable for containers marked as simple.\n * This method iterates over the container's children and adds their renderables to the instruction set.\n * @param {InstructionSet} instructionSet - The set of instructions to which the renderables will be added.\n * @param {Renderer} renderer - The renderer responsible for rendering the scene.\n * @param {RenderLayer} currentLayer - The current render layer being processed.\n * @internal\n */\n collectRenderablesSimple(instructionSet: InstructionSet, renderer: Renderer, currentLayer: RenderLayer): void;\n\n /**\n * Collects renderables using an advanced method, suitable for containers with complex processing needs.\n * This method handles additional effects and transformations that may be applied to the renderables.\n * @param {InstructionSet} instructionSet - The set of instructions to which the renderables will be added.\n * @param {Renderer} renderer - The renderer responsible for rendering the scene.\n * @param {RenderLayer} currentLayer - The current render layer being processed.\n * @internal\n */\n collectRenderablesWithEffects(\n instructionSet: InstructionSet,\n renderer: Renderer,\n currentLayer: RenderLayer,\n ): void;\n}\n\n/**\n * The collectRenderablesMixin provides implementations for the methods defined in the CollectRenderablesMixin interface.\n * It includes logic to determine the appropriate method for collecting renderables based on the container's properties.\n * @internal\n */\nexport const collectRenderablesMixin: Partial<Container> = {\n collectRenderables(instructionSet: InstructionSet, renderer: Renderer, currentLayer: RenderLayer): void\n {\n // Skip processing if the container is not in the current render layer or is not fully visible.\n if ((this.parentRenderLayer && this.parentRenderLayer !== currentLayer)\n || this.globalDisplayStatus < 0b111 || !this.includeInBuild) return;\n\n // Sort children if the container has sortable children.\n if (this.sortableChildren)\n {\n this.sortChildren();\n }\n\n // Choose the appropriate method for collecting renderables based on the container's properties.\n if (this.isSimple)\n {\n this.collectRenderablesSimple(instructionSet, renderer, currentLayer);\n }\n else if (this.renderGroup)\n {\n renderer.renderPipes.renderGroup.addRenderGroup(this.renderGroup, instructionSet);\n }\n else\n {\n this.collectRenderablesWithEffects(instructionSet, renderer, currentLayer);\n }\n },\n collectRenderablesSimple(\n instructionSet: InstructionSet,\n renderer: Renderer,\n currentLayer: RenderLayer,\n ): void\n {\n const children = this.children;\n const length = children.length;\n\n // Iterate over each child and collect their renderables.\n for (let i = 0; i < length; i++)\n {\n children[i].collectRenderables(instructionSet, renderer, currentLayer);\n }\n },\n collectRenderablesWithEffects(\n instructionSet: InstructionSet,\n renderer: Renderer,\n currentLayer: RenderLayer,\n ): void\n {\n const { renderPipes } = renderer;\n\n // Apply each effect to the renderables before collecting them.\n for (let i = 0; i < this.effects.length; i++)\n {\n const effect = this.effects[i];\n const pipe = renderPipes[effect.pipe as keyof RenderPipes] as InstructionPipe<any>;\n\n pipe.push(effect, this, instructionSet);\n }\n\n // Collect renderables using the simple method after applying effects.\n this.collectRenderablesSimple(instructionSet, renderer, currentLayer);\n\n // Remove effects from the renderables after collection, processing in reverse order.\n for (let i = this.effects.length - 1; i >= 0; i--)\n {\n const effect = this.effects[i];\n const pipe = renderPipes[effect.pipe as keyof RenderPipes] as InstructionPipe<any>;\n\n pipe.pop(effect, this, instructionSet);\n }\n }\n} as Container;\n"],"names":[],"mappings":";AAwDO,MAAM,uBAAA,GAA8C;AAAA,EACvD,kBAAA,CAAmB,cAAA,EAAgC,QAAA,EAAoB,YAAA,EACvE;AAEI,IAAA,IAAK,IAAA,CAAK,iBAAA,IAAqB,IAAA,CAAK,iBAAA,KAAsB,YAAA,IACnD,KAAK,mBAAA,GAAsB,CAAA,IAAS,CAAC,IAAA,CAAK,cAAA,EAAgB;AAGjE,IAAA,IAAI,KAAK,gBAAA,EACT;AACI,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACtB;AAGA,IAAA,IAAI,KAAK,QAAA,EACT;AACI,MAAA,IAAA,CAAK,wBAAA,CAAyB,cAAA,EAAgB,QAAA,EAAU,YAAY,CAAA;AAAA,IACxE,CAAA,MAAA,IACS,KAAK,WAAA,EACd;AACI,MAAA,QAAA,CAAS,WAAA,CAAY,WAAA,CAAY,cAAA,CAAe,IAAA,CAAK,aAAa,cAAc,CAAA;AAAA,IACpF,CAAA,MAEA;AACI,MAAA,IAAA,CAAK,6BAAA,CAA8B,cAAA,EAAgB,QAAA,EAAU,YAAY,CAAA;AAAA,IAC7E;AAAA,EACJ,CAAA;AAAA,EACA,wBAAA,CACI,cAAA,EACA,QAAA,EACA,YAAA,EAEJ;AACI,IAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,IAAA,MAAM,SAAS,QAAA,CAAS,MAAA;AAGxB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAC5B;AACI,MAAA,QAAA,CAAS,CAAC,CAAA,CAAE,kBAAA,CAAmB,cAAA,EAAgB,UAAU,YAAY,CAAA;AAAA,IACzE;AAAA,EACJ,CAAA;AAAA,EACA,6BAAA,CACI,cAAA,EACA,QAAA,EACA,YAAA,EAEJ;AACI,IAAA,MAAM,EAAE,aAAY,GAAI,QAAA;AAGxB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA,EAAA,EACzC;AACI,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA;AAC7B,MAAA,MAAM,IAAA,GAAO,WAAA,CAAY,MAAA,CAAO,IAAyB,CAAA;AAEzD,MAAA,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,cAAc,CAAA;AAAA,IAC1C;AAGA,IAAA,IAAA,CAAK,wBAAA,CAAyB,cAAA,EAAgB,QAAA,EAAU,YAAY,CAAA;AAGpE,IAAA,KAAA,IAAS,IAAI,IAAA,CAAK,OAAA,CAAQ,SAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAC9C;AACI,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA;AAC7B,MAAA,MAAM,IAAA,GAAO,WAAA,CAAY,MAAA,CAAO,IAAyB,CAAA;AAEzD,MAAA,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,cAAc,CAAA;AAAA,IACzC;AAAA,EACJ;AACJ;;;;"}