import { Mesh, Object3D, Intersection } from 'three'; import { BaseObject3D, Poi, Model } from '../Library'; import { Position, SceneEventType } from './base'; interface ScenePoiIntersect { poi: Poi; sourceData: Intersection; } interface SceneModelIntersect { model: Model; sourceData: Intersection; } /** * 通用对象交叉信息 */ interface SceneObjectIntersect { target: BaseObject3D; sourceData: Intersection; } interface ModelEventParams { target: Model; currentTarget: Mesh; intersects: SceneModelIntersect[]; event: MouseEvent | TouchEvent; } interface PoiEventParams { target: Poi; event: MouseEvent | TouchEvent; } /** * 通用对象事件参数 */ interface ObjectEventParams { target: BaseObject3D; currentTarget: Object3D; intersects: SceneObjectIntersect[]; event: MouseEvent | TouchEvent; } interface SceneClickParam { type: SceneEventType; event: MouseEvent | TouchEvent; } interface SceneGlobalEvents { modelHover?: (param: ModelEventParams) => void; modelUnHover?: (model: Model) => void; modelClick?: (param: ModelEventParams) => void; modelRightClick?: (param: ModelEventParams) => void; modelDblClick?: (param: ModelEventParams) => void; poiHover?: (poi: PoiEventParams) => void; poiUnHover?: (poi: Poi) => void; poiClick?: (poi: PoiEventParams) => void; poiRightClick?: (poi: PoiEventParams) => void; poiDblClick?: (poi: PoiEventParams) => void; selectPosition?: (position: Position) => void; sceneClick?: (param: SceneClickParam) => void; [key: string]: ((...args: any[]) => void) | undefined; } export { ScenePoiIntersect, SceneModelIntersect, SceneObjectIntersect, ModelEventParams, PoiEventParams, ObjectEventParams, SceneClickParam, SceneGlobalEvents, };