import { Ray } from "../math/Ray.ts"; import { Vector3 } from "../math/Vector3.ts"; import { Layers } from "./Layers.ts"; interface MatrixLike { elements: ArrayLike; } interface PositionAttribute { getX: (i: number) => number; getY: (i: number) => number; getZ: (i: number) => number; count: number; } interface RaycastGeometry { getAttribute?: (name: string) => PositionAttribute | undefined; index?: ArrayLike | { array: ArrayLike; } | undefined; } interface SceneObject { visible: boolean; layers: Layers; type?: string; geometry?: RaycastGeometry; matrixWorld: MatrixLike; children?: SceneObject[]; } export interface Intersection { distance: number; point: Vector3; face: { a: number; b: number; c: number; normal: Vector3 | undefined; }; object: SceneObject; } interface RaycastCamera { type: string; matrixWorld: MatrixLike; projectionMatrixInverse: MatrixLike; isOrthographic?: boolean; } /** Casts a ray into the scene to test intersections with objects. */ export declare class Raycaster { ray: Ray; near: number; far: number; camera: RaycastCamera | undefined; layers: Layers; /** Distance tolerance for Line and Points intersection tests. */ threshold: number; constructor(origin?: Vector3, direction?: Vector3, near?: number, far?: number); set(origin: Vector3, direction: Vector3): this; /** Sets the ray from a camera and normalized device coordinates. */ setFromCamera(coords: { x: number; y: number; }, camera: RaycastCamera): this; intersectObject(object: SceneObject, recursive?: boolean, intersects?: Intersection[]): Intersection[]; intersectObjects(objects: SceneObject[], recursive?: boolean, intersects?: Intersection[]): Intersection[]; } export {}; //# sourceMappingURL=Raycaster.d.ts.map