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 • 2.99 kB
Source Map (JSON)
{"version":3,"file":"checkChildrenDidChange.mjs","sources":["../../../../src/scene/container/utils/checkChildrenDidChange.ts"],"sourcesContent":["import type { Container } from '../Container';\n\n/**\n * This function will crawl through the container essentially check if the children have changed.\n *\n * This function checkChildrenDidChange recursively checks if any child in a Container\n * or its children has changed. It does this by comparing a generated changeId for each\n * child against a stored value in previousData.\n * The changeId is a combination of the child's uid and _didChangeId, bitwise manipulated for uniqueness.\n * If a change is detected, it updates previousData and sets didChange to true.\n * The function returns a boolean indicating if any change was detected in the entire hierarchy of children.\n * @param container - the container to check for changes\n * @param previousData - the previous data from the last check made\n * @param previousData.data - the data array\n * @param previousData.index - the index of the data array\n * @param previousData.didChange - did the data change\n * @internal\n */\nexport function checkChildrenDidChange(\n container: Container,\n previousData: {\n data: number[];\n index: number;\n didChange: boolean;\n })\n{\n const children = container.children;\n\n for (let i = 0; i < children.length; i++)\n {\n const child = children[i];\n\n const uid = child.uid;\n const didChange = ((child._didViewChangeTick & 0xffff) << 16) | (child._didContainerChangeTick & 0xffff);\n\n const index = previousData.index;\n\n if (previousData.data[index] !== uid || previousData.data[index + 1] !== didChange)\n {\n previousData.data[previousData.index] = uid;\n previousData.data[previousData.index + 1] = didChange;\n\n previousData.didChange = true;\n }\n\n previousData.index = index + 2;\n\n if (child.children.length)\n {\n checkChildrenDidChange(child, previousData);\n }\n }\n\n return previousData.didChange;\n}\n"],"names":[],"mappings":";AAkBO,SAAS,sBAAA,CACZ,WACA,YAAA,EAKJ;AACI,EAAA,MAAM,WAAW,SAAA,CAAU,QAAA;AAE3B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EACrC;AACI,IAAA,MAAM,KAAA,GAAQ,SAAS,CAAC,CAAA;AAExB,IAAA,MAAM,MAAM,KAAA,CAAM,GAAA;AAClB,IAAA,MAAM,aAAc,KAAA,CAAM,kBAAA,GAAqB,KAAA,KAAW,EAAA,GAAO,MAAM,uBAAA,GAA0B,KAAA;AAEjG,IAAA,MAAM,QAAQ,YAAA,CAAa,KAAA;AAE3B,IAAA,IAAI,YAAA,CAAa,IAAA,CAAK,KAAK,CAAA,KAAM,GAAA,IAAO,aAAa,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAA,KAAM,SAAA,EACzE;AACI,MAAA,YAAA,CAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,GAAI,GAAA;AACxC,MAAA,YAAA,CAAa,IAAA,CAAK,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,GAAI,SAAA;AAE5C,MAAA,YAAA,CAAa,SAAA,GAAY,IAAA;AAAA,IAC7B;AAEA,IAAA,YAAA,CAAa,QAAQ,KAAA,GAAQ,CAAA;AAE7B,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EACnB;AACI,MAAA,sBAAA,CAAuB,OAAO,YAAY,CAAA;AAAA,IAC9C;AAAA,EACJ;AAEA,EAAA,OAAO,YAAA,CAAa,SAAA;AACxB;;;;"}