import type { mat4, vec2, vec3 } from '@predy-js/render-interface'; import type { Ray, Triangle } from '../../math/raycast'; export declare enum HitTestType { triangle = 1, box = 2, sphere = 3, custom = 4 } export declare enum HitTestBehavior { notify = 1, resume = 2, none = 0 } export interface HitTestTriangleParams { type: HitTestType.triangle; triangles: Triangle[]; backfaceCulling?: boolean; behavior?: HitTestBehavior; } export interface HitTestBoxParams { type: HitTestType.box; center: vec3; size: vec3; behavior?: HitTestBehavior; } export interface HitTestSphereParams { type: HitTestType.sphere; center: vec3; radius: number; behavior?: HitTestBehavior; } export interface HitTestCustomParams { type: HitTestType.custom; collect(ray: Ray, pointInCanvas: vec2): vec3[] | void; behavior?: HitTestBehavior; } export type Region = { name: string; id: string; position: vec3; behavior?: HitTestBehavior; parentId?: string; hitPositions?: vec3[]; }; export type HitTestParams = { camera: { position: vec3; direction: vec3; viewProjection: mat4; }; x: number; y: number; inRect: (position: vec3, width: number, height: number) => boolean; };