Luxar Viewer API Documentation - v2026.10.19
    Preparing search index...

    Interface LayerApplyEngineDeps

    Dependencies injected by the owning LayersPanel. getRootGroup / getSceneNodeIndex are accessors because both fields are replaced on every initFromScene; the index (the scene loader's SceneNodeIndex, whose root is the scene graph) answers every leaf's root→leaf chain in O(1), so a slider tick over a P-part layer is O(P · depth) rather than a children.find descent per leaf (O(P²)); state is the panel's (stable) layer-state manager and requestRender wakes the on-demand render loop after a material write, and requestReprocess refreshes a layer that became load-eligible again.

    interface LayerApplyEngineDeps {
        getRootGroup: () => Group<Object3DEventMap> | null;
        getSceneNodeIndex: () => SceneNodeIndex | null;
        getDisplayDims?: () => readonly number[] | null;
        state: LayerStateManager;
        requestRender: () => void;
        requestReprocess: (paths: readonly string[]) => void;
        invalidatePickBuffer?: () => void;
    }
    Index
    getRootGroup: () => Group<Object3DEventMap> | null
    getSceneNodeIndex: () => SceneNodeIndex | null
    getDisplayDims?: () => readonly number[] | null
    requestRender: () => void
    requestReprocess: (paths: readonly string[]) => void
    invalidatePickBuffer?: () => void

    Marks the cached GPU pick buffer dirty so it re-renders after a panel edit changed pick coverage (opacity/gain/cutoff/blending/physical knobs). No-op when picking is inactive.