import type { Material } from "../materials/Material.ts"; import { Matrix4 } from "../math/Matrix4.ts"; import { Vector3 } from "../math/Vector3.ts"; import { DrawCall } from "./DrawCall.ts"; import { DrawList } from "./DrawList.ts"; import { TriangleBuffer } from "./TriangleBuffer.ts"; interface Vec3 { x: number; y: number; z: number; } interface AttributeLike { array: Float32Array; itemSize?: number; } interface GeometryLike { boundingSphere?: { centre: Vector3; radius: number; }; computeBoundingSphere?: () => void; getAttribute: (name: string) => AttributeLike | undefined; index?: { array: ArrayLike; } | ArrayLike; _sequentialIndices?: Uint32Array; _uvCache?: Float32Array; } interface SceneNode { type?: string; visible: boolean; children: SceneNode[]; geometry?: GeometryLike; material?: Material; matrixWorld: Matrix4; updateMatrixWorld?: (updateParents?: boolean, force?: boolean) => void; frustumCulled?: boolean; _projectedVerts?: Float32Array; _worldPositions?: Float32Array; _worldNormalCache?: Float32Array; _worldNormalCacheKey?: Float32Array; _triangleBuffer?: TriangleBuffer; _drawCall?: DrawCall; [k: string]: unknown; } interface CameraLike { matrixWorldInverse: Matrix4; projectionMatrix: Matrix4; position: Vec3; updateMatrixWorld: () => void; } interface SceneLike { children: SceneNode[]; visible: boolean; fog?: { near: number; far: number; color: { r: number; g: number; b: number; }; lut: Float32Array; } | undefined; autoUpdate?: boolean; } /** Walks the scene graph collecting visible draw calls. */ export declare class SceneTraversal { #private; traverse(scene: SceneLike, camera: CameraLike, width?: number, height?: number, timings?: { profileTraversal?: boolean; travUpdateWorldMs?: number; travWalkMs?: number; travProjectMs?: number; travAssembleMs?: number; travDrawCalls?: number; }): DrawList; } export {}; //# sourceMappingURL=SceneTraversal.d.ts.map