Split out so a deferred LOD level can run it on first activation. Reads the
effective attrs again rather than threading them from the cheap half — a level
can be activated long after its placeholder was attached, and the Layers panel
may have changed them in between.
Deliberately does NOT register the loader — that is the EAGER caller's job (see
loadMeshNode), exactly as in the three sibling loaders. A lazy LOD level
must stay out of the per-slice update sweep: the registry drives its reloads on a
settled slice change, and a registered level would additionally be re-projected
and re-committed by the sweep on every scrub — including while it is hidden, and
concurrently with the registry's own ensureLoaded. (Not re-FETCHED: the
whole-node loader serves every later updateView from its one cached decode.)
Gating each scrub on projecting the full-resolution surface is precisely what
deferring it avoids.
Expensive half: fetch, project and commit.
Split out so a deferred LOD level can run it on first activation. Reads the effective attrs again rather than threading them from the cheap half — a level can be activated long after its placeholder was attached, and the Layers panel may have changed them in between.
Deliberately does NOT register the loader — that is the EAGER caller's job (see loadMeshNode), exactly as in the three sibling loaders. A lazy LOD level must stay out of the per-slice update sweep: the registry drives its reloads on a settled slice change, and a registered level would additionally be re-projected and re-committed by the sweep on every scrub — including while it is hidden, and concurrently with the registry's own
ensureLoaded. (Not re-FETCHED: the whole-node loader serves every laterupdateViewfrom its one cached decode.) Gating each scrub on projecting the full-resolution surface is precisely what deferring it avoids.