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

    Narrow context the load-scene path needs. Captures the orchestrator's mutable resource references via getter callbacks so the helper can read the latest snapshot of gpuBufferPool / monitor / etc., and uses explicit setters to write the new dataset-scoped resources back.

    interface LoadSceneCtx {
        config: LoaderConfig;
        viewState: () => ViewState;
        loaders: Map<string, DataLoader>;
        linesLoaders: Map<string, LinesDataLoader>;
        gsplatLoaders: Map<string, GSplatsDataLoader>;
        meshLoaders: Map<string, MeshDataLoader>;
        gpuBufferPool: () => GPUBufferPool | null;
        monitor: () => SceneLoaderMonitorPort | null;
        profiler: UpdateProfiler | null;
        lodGroupRegistry: LODGroupRegistry | null;
        normalizeURL(url: string): string;
        dispose(): Promise<void>;
        clearViewStatePrev(): void;
        initializeSceneDimensions(sceneDims: unknown): void;
        makeNodeBuildCtx(): NodeBuildCtx;
        updateVisibleCountsInMonitor(): void;
        getFailedLoaderPaths(): string[];
        getFailedLoaderReasons(): string[];
        getFailedLoadsProvider(): FailedLoadsProviderPort;
        refinementHoldReason?(path: string): RefinementHoldReason | null;
        scheduleGSplatsRefinement(): Promise<void>;
        drainPendingViewState(): boolean;
        resolvePassWaiters(): void;
        setIdentityWatchdog(watchdog: SceneIdentityWatchdog | null): void;
        setDatasetAbortController(controller: AbortController | null): void;
        setCachingStore(store: MultiLevelCachingStore | null): void;
        setL0Cache(cache: DecompressedChunkCache | null): void;
        setSliceCache(cache: SliceCache | null): void;
        setCacheBudgets(budgets: CacheBudgets | null): void;
        setZarrStore(store: Readable): void;
        setRootGroup(group: Group): void;
        setSceneGraph(graph: SceneNode): void;
        setUpdateInProgress(value: boolean): void;
        getDatasetAbortController(): AbortController | null;
    }
    Index
    config: LoaderConfig

    Loader configuration (cache flags, prefetch flags).

    viewState: () => ViewState

    Current view state — read after initializeSceneDimensions for logging.

    loaders: Map<string, DataLoader>

    Active per-type loader maps for the post-load monitor wiring.

    linesLoaders: Map<string, LinesDataLoader>
    gsplatLoaders: Map<string, GSplatsDataLoader>
    meshLoaders: Map<string, MeshDataLoader>

    Mesh loaders, for the post-load refinement kick and the monitor's LOD-progress provider.

    Deliberately NOT passed to reportLoadOutcome below, which has never carried mesh — widening the load-outcome grading is a separate change with its own observable output. The refinement kick is needed because a mesh reveal ladder commits only its first level during loadScene, so without it the surface would sit at that first patch until the user moved a slider; the LOD-progress provider is needed because the scene-graph converter stamps additiveSublods on a laddered mesh parent, and a node with that stamp but no live loader state renders as LOD -/N ("not streaming") throughout.

    gpuBufferPool: () => GPUBufferPool | null

    Current GPU buffer pool reference (may be null when disabled).

    monitor: () => SceneLoaderMonitorPort | null

    Current monitor reference.

    profiler: UpdateProfiler | null

    Profiler reference.

    lodGroupRegistry: LODGroupRegistry | null

    LOD-group registry for the live LOD-progress provider (substitutive levels).

    • Validate scene_dimensions blob and update the loader's viewState. Implementation in initialize-scene-dimensions.ts; the orchestrator writes the result back to its own viewState field.

      Parameters

      • sceneDims: unknown

      Returns void

    • Drain any view-state queued while the serialization lock was held, re-entering updateView with it. Only used by the post-load refinement kick's rejection handler — see the comment at that call site.

      Returns boolean

      True when a state was drained (the re-entered pass then settles the parked waiters itself); false when nothing was queued.

    • Settle callers parked in updateView's supersede branch. Only used by the post-load refinement kick's rejection handler, for the case where nothing was queued and so no re-entered pass will resolve them.

      Returns void