True when node and every one of its ancestors is visible — i.e. the node
is reachable on screen, not buried under a hidden subtree.
Only an explicit visible === false hides (see VisibilityNode), so
undefined/null nodes and partial shapes are treated as visible. That
makes "ancestors only" expressible as isEffectivelyVisible(node.parent),
which is what callers that own the node's own flag (the LOD registry sets
the displayed level's visible) need.
O(depth) with no allocation — safe on a per-frame path.
True when
nodeand every one of its ancestors is visible — i.e. the node is reachable on screen, not buried under a hidden subtree.Only an explicit
visible === falsehides (see VisibilityNode), soundefined/nullnodes and partial shapes are treated as visible. That makes "ancestors only" expressible asisEffectivelyVisible(node.parent), which is what callers that own the node's own flag (the LOD registry sets the displayed level'svisible) need.O(depth) with no allocation — safe on a per-frame path.