IFClite TypeScript API
    Preparing search index...

    Interface SceneContents

    The measured external scene surface. See the module doc before widening.

    interface SceneContents {
        addInstancedShard(
            device: GPUDevice,
            shard: DecodedInstancedShard,
            modelIndex?: number,
        ): void;
        appearanceSourceMesh?(mesh: MeshData): MeshData;
        appendToBatches(
            meshDataArray: MeshData[],
            device: GPUDevice,
            pipeline: RenderPipeline,
            isStreaming?: boolean,
        ): void;
        clear(): void;
        clearColorOverrides(): void;
        clearFlatGeometry(): void;
        clearFlatGeometryForRebuild?(
            geometry: readonly MeshData[],
            models: ReadonlySet<number>,
            sourceGeometry?: readonly MeshData[],
        ): void;
        drainColdTier(): Promise<void>;
        finalizeStreaming(device: GPUDevice, pipeline: RenderPipeline): void;
        finalizeStreamingAsync(
            device: GPUDevice,
            pipeline: RenderPipeline,
            budgetMs?: number,
            trace?: LoadTrace,
        ): Promise<void>;
        finishEphemeralStreaming(): void;
        flushPending(
            device: GPUDevice,
            pipeline: RenderPipeline,
            budgetMs?: number,
            trace?: LoadTrace,
            deterministicUploads?: boolean,
        ): boolean;
        forEachMeshData(visit: (md: MeshData) => void): void;
        getAllInstancedMeshData(): MeshData[];
        getAllMeshDataExpressIds(): number[];
        getBatchedMeshes(): BatchedMesh[];
        getBounds(): | {
            max: { x: number; y: number; z: number };
            min: { x: number; y: number; z: number };
        }
        | null;
        getColorOverrides(): | ReadonlyMap<
            number,
            readonly [number, number, number, number],
        >
        | null;
        getEntityBoundingBox(expressId: number): BoundingBox | null;
        getEntityLocalBounds(
            expressId: number,
        ): { max: [number, number, number]; min: [number, number, number] } | null;
        getEntityTransform(expressId: number): Float64Array<ArrayBufferLike> | null;
        getInstancedEntityBounds(expressId: number): BoundingBox | null;
        getInstancedEntityCount(): number;
        getInstancedEntityIds(): IterableIterator<number>;
        getInstancedMeshDataPieces(expressId: number): MeshData[] | undefined;
        getInstancedModelIndices(): number[];
        getMeshData(expressId: number, modelIndex?: number): MeshData | undefined;
        getMeshDataPieces(
            expressId: number,
            modelIndex?: number,
        ): MeshData[] | undefined;
        getMeshes(): Mesh[];
        getResidentCpuBytes(): number;
        getResidentGpuBytes(): ResidentGpuBytes;
        hasMeshData(expressId: number, modelIndex?: number): boolean;
        hasPendingBatches(): boolean;
        hasQueuedMeshes(): boolean;
        hasResidencyRestoreWork(): boolean;
        hasStreamingFragments(): boolean;
        isEphemeralStreaming(): boolean;
        isFinalizeInProgress(): boolean;
        isInstancedEntity(expressId: number): boolean;
        placeAppearanceSource?(mesh: MeshData): MeshData;
        processResidencyRestores(
            device: GPUDevice,
            pipeline: RenderPipeline,
            budgetMs?: number,
        ): number;
        queueMeshes(meshes: MeshData[]): void;
        rebuildPendingBatches(device: GPUDevice, pipeline: RenderPipeline): void;
        removeInstancedTemplatesForModel(modelIndex: number): number;
        removeMeshesForEntities(expressIds: Iterable<number>): number;
        rotateMeshesForEntities(
            updates: Map<
                number,
                { angle: number; pivot: [number, number, number] },
            >,
        ): number;
        setColdGeometryProvider(provider: ColdGeometryProvider | null): void;
        setColorOverrides(
            overrides: Map<number, [number, number, number, number]>,
            device: GPUDevice,
            pipeline: RenderPipeline,
        ): void;
        setEphemeralStreamingMode(enabled: boolean): void;
        setGpuResidencyBudget(bytes: number | null): void;
        setHostResidencyBudget(bytes: number | null): void;
        setInstancedVisible(visible: boolean): void;
        setLodBuildsEnabled(enabled: boolean): void;
        setModelRotation(
            modelIndex: number,
            angle: number,
            pivot: readonly [number, number, number],
        ): boolean;
        setSpatialChunking(config: SpatialChunkingConfig | null): void;
        translateMeshesForEntities(
            updates: Map<number, [number, number, number]>,
        ): number;
        updateMeshColors(
            updates: Map<number, [number, number, number, number]>,
            device: GPUDevice,
            pipeline: RenderPipeline,
        ): void;
    }
    Index
    • Parameters

      Returns void

    • Recover model-local geometry before publishing an appearance edit to model state.

      Parameters

      Returns MeshData

    • Parameters

      Returns void

    • Returns void

    • Returns void

    • Returns void

    • Preserve only exactly matching committed appearance owners during source rebuild.

      Parameters

      • geometry: readonly MeshData[]
      • models: ReadonlySet<number>
      • OptionalsourceGeometry: readonly MeshData[]

      Returns void

    • Returns Promise<void>

    • Parameters

      Returns Promise<void>

    • Returns void

    • Parameters

      • device: GPUDevice
      • pipeline: RenderPipeline
      • OptionalbudgetMs: number
      • Optionaltrace: LoadTrace
      • OptionaldeterministicUploads: boolean

      Returns boolean

    • Visits every flat mesh piece in the scene. getAllMeshDataExpressIds gives only the id set; this is the accessor for consumers that need the mesh data itself while walking it, such as feeding a whole-scene geometry pass (#4357).

      Parameters

      Returns void

    • Returns number[]

    • Returns
          | {
              max: { x: number; y: number; z: number };
              min: { x: number; y: number; z: number };
          }
          | null

    • The overrides currently installed, or null when nothing is painted. The store's pendingColorUpdates is a one-shot signal that is nulled after it flushes, so this retained map is the only readable record of what is painted — useColorOverlaySync re-hands it back to setColorOverrides so meshes that streamed in after the flush get their colour (#3890).

      Returns ReadonlyMap<number, readonly [number, number, number, number]> | null

    • Parameters

      • expressId: number

      Returns BoundingBox | null

    • An entity's bounds in its OWN local (pre-transform) frame, unioned across every occurrence sharing the expressId — unlike getEntityBoundingBox, which is a post-transform, world-axis-aligned box and cannot be unioned meaningfully across differently-placed occurrences (#4357).

      Parameters

      • expressId: number

      Returns { max: [number, number, number]; min: [number, number, number] } | null

    • The resolved local→world placement transform for one entity: row-major 4×4 (16 numbers), Float64Array for full georeferenced precision. Pairs with getEntityLocalBounds to reconstruct an entity's true oriented world box — getEntityBoundingBox above is post-transform and world-axis-aligned instead (#4357).

      Parameters

      • expressId: number

      Returns Float64Array<ArrayBufferLike> | null

    • Parameters

      • expressId: number

      Returns BoundingBox | null

    • Returns number

    • Returns IterableIterator<number>

    • Parameters

      • expressId: number

      Returns MeshData[] | undefined

    • Returns number[]

    • The single-mesh accessor: one representative mesh per entity, or undefined when the entity has no flat mesh data. When an entity's pieces share a colour their geometry is MERGED into that one mesh; when colours differ, the first piece is returned so per-piece colours stay correct (mirrors Scene.getMeshData). getMeshDataPieces returns every piece; reach for this one when a caller is written against one representative mesh per entity (#4357).

      Parameters

      • expressId: number
      • OptionalmodelIndex: number

      Returns MeshData | undefined

    • Parameters

      • expressId: number
      • OptionalmodelIndex: number

      Returns MeshData[] | undefined

    • Returns number

    • O(1) "is this id in the flat mesh map" — the presence question, without getMeshDataPieces' per-entity extraction out of a colour-merged batch. Pair it with isInstancedEntity to ask the same thing of both geometry paths (useColorOverlaySync does, per settled geometry batch).

      Parameters

      • expressId: number
      • OptionalmodelIndex: number

      Returns boolean

    • Returns boolean

    • Returns boolean

    • Returns boolean

    • Returns boolean

    • Returns boolean

    • Returns boolean

    • O(1) instanced-membership test. getInstancedMeshDataPieces MATERIALIZES world-space triangles per occurrence, so it is never the right way to ask whether an id exists.

      Parameters

      • expressId: number

      Returns boolean

    • Place a canonical model-local source in the current registered model frame.

      Parameters

      Returns MeshData

    • Parameters

      Returns number

    • Parameters

      Returns void

    • Parameters

      Returns void

    • Parameters

      • modelIndex: number

      Returns number

    • Parameters

      • expressIds: Iterable<number>

      Returns number

    • Parameters

      • updates: Map<number, { angle: number; pivot: [number, number, number] }>

      Returns number

    • Parameters

      • overrides: Map<number, [number, number, number, number]>
      • device: GPUDevice
      • pipeline: RenderPipeline

      Returns void

    • Parameters

      • enabled: boolean

      Returns void

    • Parameters

      • bytes: number | null

      Returns void

    • Parameters

      • bytes: number | null

      Returns void

    • Parameters

      • visible: boolean

      Returns void

    • Parameters

      • enabled: boolean

      Returns void

    • Turn modelIndex's GPU-instanced occurrences about the render-frame pivot (pivot[0], *, pivot[2]); angle === 0 clears the rotation (#4890). The GPU-instanced counterpart to Renderer.setModelTranslation — flat/authored/batched geometry rotates through the viewer's bake, not this method.

      Parameters

      • modelIndex: number
      • angle: number
      • pivot: readonly [number, number, number]

      Returns boolean

    • Parameters

      • updates: Map<number, [number, number, number]>

      Returns number

    • Parameters

      • updates: Map<number, [number, number, number, number]>
      • device: GPUDevice
      • pipeline: RenderPipeline

      Returns void