@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
43 lines (42 loc) • 2.19 kB
TypeScript
import { Box3, type Intersection, Object3D, Raycaster, Vector3, RaycasterParameters, Face } from 'three';
import { ExtendedTriangle, ShapecastIntersection } from 'three-mesh-bvh';
import { BatchObject } from '../batching/BatchObject.js';
import SpeckleMesh from './SpeckleMesh.js';
import SpeckleInstancedMesh from './SpeckleInstancedMesh.js';
export declare const NOT_INTERSECTED: ShapecastIntersection;
export declare const INTERSECTED: ShapecastIntersection;
export declare const CONTAINED: ShapecastIntersection;
export type ExtendedShapeCastCallbacks = {
intersectsTAS?: (box: Box3, isLeaf: boolean, score: number | undefined, depth: number, nodeIndex: number) => ShapecastIntersection | boolean;
intersectTASRange?: (batchObjects: BatchObject) => ShapecastIntersection | boolean;
intersectsBounds: (box: Box3, isLeaf: boolean, score: number | undefined, depth: number, nodeIndex: number) => ShapecastIntersection | boolean;
traverseBoundsOrder?: (box: Box3) => number;
} & ({
intersectsRange: (triangleOffset: number, triangleCount: number, contained: boolean, depth: number, nodeIndex: number, box: Box3) => boolean;
} | {
intersectsTriangle: (triangle: ExtendedTriangle, triangleIndex: number, contained: boolean, depth: number, batchObject?: BatchObject) => boolean | void;
});
export interface ExtendedIntersection extends Intersection {
batchObject?: BatchObject;
pointOnLine?: Vector3;
}
export interface MeshIntersection extends Intersection {
face: Face;
faceIndex: number;
}
export interface ExtendedMeshIntersection extends MeshIntersection {
batchObject: BatchObject;
object: SpeckleMesh | SpeckleInstancedMesh;
}
export interface ExtendedRaycasterParameters extends RaycasterParameters {
Line2: {
threshold: number;
};
}
export declare class SpeckleRaycaster extends Raycaster {
intersectTASOnly: boolean;
onObjectIntersectionTest: ((object: Object3D) => void) | null;
params: ExtendedRaycasterParameters;
constructor(origin?: Vector3, direction?: Vector3, near?: number, far?: number);
intersectObjects(objects: Array<Object3D>, recursive?: boolean, intersects?: never[]): never[];
}