Detect cycles in the SceneTransform parent chain. Walks
every transform, following parentTransform pointers; a hit on a
transform that's already on the current walk's stack means a
cycle.
Iterative (no recursion) so deep parent chains can't blow the JS
stack. Per-id colours: 0 unvisited, 1 on-stack, 2 done.
No highlight payload — the cyclic subtree won't render, so
locating it in the Viewer would land the camera on something
invisible.
Detect cycles in the SceneTransform parent chain. Walks every transform, following
parentTransformpointers; a hit on a transform that's already on the current walk's stack means a cycle.Iterative (no recursion) so deep parent chains can't blow the JS stack. Per-id colours: 0 unvisited, 1 on-stack, 2 done.
No
highlightpayload — the cyclic subtree won't render, so locating it in the Viewer would land the camera on something invisible.