Resolves the world matrix of root and of every node beneath it, depth-first
in insertion order, and returns what the pass did.
This is the per-frame entry point: §7 requires one call per fixed step before
physics synchronization and one before render-item generation. Unchanged
subtrees are skipped (see the module documentation), so a pass over a static
scene is a version comparison per node and no arithmetic at all.
root need not be a scene root. Passing an interior node resolves that
node's ancestors first — a no-op when they are already current — so the
subtree is always multiplied against a fresh parent world matrix rather than
a stale one; the ancestors count towards the returned stats. A true root
(parent === null) simply copies its local matrix into its world matrix.
Pass out to reuse a stats object and make the call allocation-free, per the
§7b/D7 out policy — engine-internal per-frame callers always do; omitting
it allocates one small object for authoring convenience. out's counters are
reset on entry, so a reused instance never accumulates across passes.
Structurally mutating the graph from a listener during the pass is not
supported, for the same reason Node.traverse does not support it: children
are read live by index so that the walk allocates nothing.
Resolves the world matrix of
rootand of every node beneath it, depth-first in insertion order, and returns what the pass did.This is the per-frame entry point: §7 requires one call per fixed step before physics synchronization and one before render-item generation. Unchanged subtrees are skipped (see the module documentation), so a pass over a static scene is a version comparison per node and no arithmetic at all.
rootneed not be a scene root. Passing an interior node resolves that node's ancestors first — a no-op when they are already current — so the subtree is always multiplied against a fresh parent world matrix rather than a stale one; the ancestors count towards the returned stats. A true root (parent === null) simply copies its local matrix into its world matrix.Pass
outto reuse a stats object and make the call allocation-free, per the §7b/D7outpolicy — engine-internal per-frame callers always do; omitting it allocates one small object for authoring convenience.out's counters are reset on entry, so a reused instance never accumulates across passes.Structurally mutating the graph from a listener during the pass is not supported, for the same reason
Node.traversedoes not support it: children are read live by index so that the walk allocates nothing.