import * as THREE from 'three'; import { CanvasContext, Event, UserEventContext } from '@zcomponent/core'; import { ThreeSceneContext } from './scenecontext'; import { Object3D } from './components/Object3D'; import { PointerContext } from './pointercontext'; export interface ThreePointerEvent { pointerId: number; component: Object3D; object: THREE.Object3D; } export interface ThreePointerPresentEvent extends ThreePointerEvent { domEvent?: PointerEvent; distance: number; point: [number, number, number]; pointOnLine?: [number, number, number]; face?: THREE.Face; faceIndex?: number; uv?: [number, number]; uv2?: [number, number]; instanceId?: number; intersections: ThreePointerPresentEvent[]; stopPropagation: () => void; } export interface ThreeWheelEvent extends ThreePointerPresentEvent { deltaX: number; deltaY: number; deltaZ: number; deltaMode: number; } export interface ThreePointerEventListener { onClick: Event<[ThreePointerPresentEvent]>; onDblClick: Event<[ThreePointerPresentEvent]>; onContextMenu: Event<[ThreePointerPresentEvent]>; onPointerDown: Event<[ThreePointerPresentEvent]>; onPointerUp: Event<[ThreePointerPresentEvent]>; onPointerMove: Event<[ThreePointerPresentEvent]>; onPointerEnter: Event<[ThreePointerPresentEvent]>; onPointerLeave: Event<[ThreePointerEvent]>; onPointerOver: Event<[ThreePointerPresentEvent]>; onPointerOut: Event<[ThreePointerEvent]>; onPointerCancel: Event<[ThreePointerEvent]>; onWheel: Event<[ThreeWheelEvent]>; } export declare function setupPointerEvents(canvasContext: CanvasContext, sceneContexts: [ThreeSceneContext, number][], userEventContext: UserEventContext, pointerContext: PointerContext): void;