{"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 */\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":";AAiBgB,SAAA,sBAAA,CACZ,WACA,YAKJ,EAAA;AACI,EAAA,MAAM,WAAW,SAAU,CAAA,QAAA,CAAA;AAE3B,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,QAAQ,CACrC,EAAA,EAAA;AACI,IAAM,MAAA,KAAA,GAAQ,SAAS,CAAC,CAAA,CAAA;AAExB,IAAA,MAAM,MAAM,KAAM,CAAA,GAAA,CAAA;AAClB,IAAA,MAAM,aAAc,KAAM,CAAA,kBAAA,GAAqB,KAAW,KAAA,EAAA,GAAO,MAAM,uBAA0B,GAAA,KAAA,CAAA;AAEjG,IAAA,MAAM,QAAQ,YAAa,CAAA,KAAA,CAAA;AAE3B,IAAI,IAAA,YAAA,CAAa,IAAK,CAAA,KAAK,CAAM,KAAA,GAAA,IAAO,aAAa,IAAK,CAAA,KAAA,GAAQ,CAAC,CAAA,KAAM,SACzE,EAAA;AACI,MAAa,YAAA,CAAA,IAAA,CAAK,YAAa,CAAA,KAAK,CAAI,GAAA,GAAA,CAAA;AACxC,MAAA,YAAA,CAAa,IAAK,CAAA,YAAA,CAAa,KAAQ,GAAA,CAAC,CAAI,GAAA,SAAA,CAAA;AAE5C,MAAA,YAAA,CAAa,SAAY,GAAA,IAAA,CAAA;AAAA,KAC7B;AAEA,IAAA,YAAA,CAAa,QAAQ,KAAQ,GAAA,CAAA,CAAA;AAE7B,IAAI,IAAA,KAAA,CAAM,SAAS,MACnB,EAAA;AACI,MAAA,sBAAA,CAAuB,OAAO,YAAY,CAAA,CAAA;AAAA,KAC9C;AAAA,GACJ;AAEA,EAAA,OAAO,YAAa,CAAA,SAAA,CAAA;AACxB;;;;"}