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 • 9.95 kB
Source Map (JSON)
{"version":3,"file":"updateRenderGroupTransforms.mjs","sources":["../../../../src/scene/container/utils/updateRenderGroupTransforms.ts"],"sourcesContent":["import { Container, UPDATE_BLEND, UPDATE_COLOR, UPDATE_VISIBLE } from '../Container';\nimport { clearList } from './clearList';\nimport { multiplyColors } from './multiplyColors';\n\nimport type { ViewContainer } from '../../view/ViewContainer';\nimport type { RenderGroup } from '../RenderGroup';\n\nconst tempContainer = new Container();\nconst UPDATE_BLEND_COLOR_VISIBLE = UPDATE_VISIBLE | UPDATE_COLOR | UPDATE_BLEND;\n\n/**\n * @param renderGroup\n * @param updateChildRenderGroups\n * @internal\n */\nexport function updateRenderGroupTransforms(renderGroup: RenderGroup, updateChildRenderGroups = false)\n{\n updateRenderGroupTransform(renderGroup);\n\n const childrenToUpdate = renderGroup.childrenToUpdate;\n\n const updateTick = renderGroup.updateTick++;\n\n for (const j in childrenToUpdate)\n {\n const renderGroupDepth = Number(j);\n\n const childrenAtDepth = childrenToUpdate[j];\n\n const list = childrenAtDepth.list;\n const index = childrenAtDepth.index;\n\n for (let i = 0; i < index; i++)\n {\n const child = list[i];\n\n // check that these things match our layer and depth - if the renderGroup does not match,\n // the child has been re-parented into another rendergroup since it asked to be updated so we can ignore it here\n // secondly if the relativeRenderGroupDepth has changed, then the it means it will have been nested at a\n // different different level in the render group - so we can wait for the update that does in fact match\n if (child.parentRenderGroup === renderGroup && child.relativeRenderGroupDepth === renderGroupDepth)\n {\n updateTransformAndChildren(child, updateTick, 0);\n }\n }\n\n clearList(list, index);\n\n childrenAtDepth.index = 0;\n }\n\n if (updateChildRenderGroups)\n {\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++)\n {\n updateRenderGroupTransforms(renderGroup.renderGroupChildren[i], updateChildRenderGroups);\n }\n }\n}\n\n/**\n * @param renderGroup\n * @internal\n */\nexport function updateRenderGroupTransform(renderGroup: RenderGroup)\n{\n const root = renderGroup.root;\n\n let worldAlpha;\n\n if (renderGroup.renderGroupParent)\n {\n const renderGroupParent = renderGroup.renderGroupParent;\n\n renderGroup.worldTransform.appendFrom(\n root.relativeGroupTransform,\n renderGroupParent.worldTransform,\n );\n\n renderGroup.worldColor = multiplyColors(\n root.groupColor,\n renderGroupParent.worldColor,\n );\n\n worldAlpha = root.groupAlpha * renderGroupParent.worldAlpha;\n }\n else\n {\n renderGroup.worldTransform.copyFrom(root.localTransform);\n renderGroup.worldColor = root.localColor;\n worldAlpha = root.localAlpha;\n }\n\n // eslint-disable-next-line no-nested-ternary\n worldAlpha = worldAlpha < 0 ? 0 : (worldAlpha > 1 ? 1 : worldAlpha);\n renderGroup.worldAlpha = worldAlpha;\n\n renderGroup.worldColorAlpha = renderGroup.worldColor\n + (((worldAlpha * 255) | 0) << 24);\n}\n\n/**\n * @param container\n * @param updateTick\n * @param updateFlags\n * @internal\n */\nexport function updateTransformAndChildren(container: Container, updateTick: number, updateFlags: number)\n{\n if (updateTick === container.updateTick) return;\n container.updateTick = updateTick;\n\n container.didChange = false;\n\n const localTransform = container.localTransform;\n\n container.updateLocalTransform();\n\n const parent = container.parent;\n\n if ((parent && !parent.renderGroup))\n {\n updateFlags |= container._updateFlags;\n\n container.relativeGroupTransform.appendFrom(\n localTransform,\n parent.relativeGroupTransform,\n );\n\n if (updateFlags & UPDATE_BLEND_COLOR_VISIBLE)\n {\n updateColorBlendVisibility(container, parent, updateFlags);\n }\n }\n else\n {\n updateFlags = container._updateFlags;\n\n container.relativeGroupTransform.copyFrom(localTransform);\n\n if (updateFlags & UPDATE_BLEND_COLOR_VISIBLE)\n {\n updateColorBlendVisibility(container, tempContainer, updateFlags);\n }\n }\n\n // don't update children if its a layer..\n if (!container.renderGroup)\n {\n const children = container.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++)\n {\n updateTransformAndChildren(children[i], updateTick, updateFlags);\n }\n\n const renderGroup = container.parentRenderGroup;\n const renderable = container as ViewContainer;\n\n if (renderable.renderPipeId && !renderGroup.structureDidChange)\n {\n renderGroup.updateRenderable(renderable);\n }\n }\n}\n\nfunction updateColorBlendVisibility(\n container: Container,\n parent: Container,\n updateFlags: number,\n): void\n{\n if (updateFlags & UPDATE_COLOR)\n {\n container.groupColor = multiplyColors(\n container.localColor,\n parent.groupColor\n );\n\n let groupAlpha = container.localAlpha * parent.groupAlpha;\n\n // eslint-disable-next-line no-nested-ternary\n groupAlpha = groupAlpha < 0 ? 0 : (groupAlpha > 1 ? 1 : groupAlpha);\n\n container.groupAlpha = groupAlpha;\n container.groupColorAlpha = container.groupColor + (((groupAlpha * 255) | 0) << 24);\n }\n\n if (updateFlags & UPDATE_BLEND)\n {\n container.groupBlendMode = container.localBlendMode === 'inherit' ? parent.groupBlendMode : container.localBlendMode;\n }\n\n if (updateFlags & UPDATE_VISIBLE)\n {\n container.globalDisplayStatus = container.localDisplayStatus & parent.globalDisplayStatus;\n }\n\n container._updateFlags = 0;\n}\n\n"],"names":[],"mappings":"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"}