import { List, NumberKeyList } from "./longan/gs.collections"; import { Geometry } from "./longan/geometry"; import { AreaSelectionType, ElementType, Viewer as LonganCoreViewer } from "./longan/gs.viewer"; import { Segment } from "./longan/segment"; import { OperatorManager } from "./managers/operatorManager"; import { SelectionKey } from "./managers/selectionManager"; import { RenderInstanceObject } from "./objects/renderInstanceObject"; import { RenderObject } from "./objects/renderObject"; import { Process } from "./process"; import { RenderPassCollection } from "./rendering/renderPass"; import { EventArgs } from "./events"; import { PropertyComponent } from "./propertyComponents/propertyComponent"; import { Camera } from "./rendering/camera"; import { UpdateManager } from "./managers/updateManager"; import { RenderLivingObject } from "./objects/renderLivingObject"; import { IRenderContext } from "./rendering/renderContext"; import { CoordinateManager } from "./managers/coordinateManager"; export declare enum CoordinateType { Pixels = 1, Window = 2, World = 3, Viewport = 4 } export declare enum UpdateDisplayMode { Static = 1, Dynamic = 2 } export declare class ViewerEvent { viewer: Viewer; uiEvent: UIEvent; constructor(viewer: any, e: UIEvent); mouseEvent(): MouseEvent; wheelEvent(): WheelEvent; touchEvent(): TouchEvent; keyboardEvent(): KeyboardEvent; mousePixelPos(): Float32Array; mouseWorldPos(): Float32Array; mouseNearWorldPos(): Float32Array; mouseFarWorldPos(): Float32Array; mouseZWorldPos(z: number): Float32Array; mouseWorldRay(): Float32Array; mouseViewpointPos(): Float32Array; mouseWindowPos(): Float32Array; mouseUnitWindowPos(): Float32Array; getElementPos(element: any): { top: any; left: any; }; touchWorldPos(): Float32Array; touchWorldPos1(): Float32Array; touchWorldPos2(): Float32Array; touchNearWorldPos(): Float32Array; touchWindowPos(): Float32Array; touchWindowPos1(): Float32Array; touchUnitWindowPos(): Float32Array; touchPixelPos(): Float32Array; touchPixelPos1(): Float32Array; touchWorldRay(): Float32Array; touchWorldRay1(): Float32Array; } export declare class RenderObjectCollection { private _owner; get first(): RenderObject; constructor(owner: Viewer); add(parent: RenderObject, renderObject: RenderObject): void; remove(renderObject: RenderObject): void; delete(renderObject: RenderObject): void; clear(): void; find(typeName: string): T; findByName(name: string): RenderObject; findById(id: string): RenderObject; has(typeName: string): boolean; } export declare class Viewer extends LonganCoreViewer { private static insNoCounter; static collisionCounter: number; private _boundingBox; autoUpdateNearFar: boolean; /** 鼠标左键点击 */ onLButtonDown: List<(sender: Viewer, event: ViewerEvent) => void>; /** 鼠标左键松开 */ onLButtonUp: List<(sender: Viewer, event: ViewerEvent) => void>; /** 鼠标右键点击 */ onRButtonDown: List<(sender: Viewer, event: ViewerEvent) => void>; /** 鼠标右键松开 */ onRButtonUp: List<(sender: Viewer, event: ViewerEvent) => void>; /** 鼠标中键点击 */ onMButtonDown: List<(sender: Viewer, event: ViewerEvent) => void>; /** 鼠标中键松开 */ onMButtonUp: List<(sender: Viewer, event: ViewerEvent) => void>; /** 鼠标中键滚轮滚动 */ onMouseWheel: List<(sender: Viewer, event: ViewerEvent) => void>; /** 鼠标移动 */ onMouseMove: List<(sender: Viewer, event: ViewerEvent) => void>; /** 左键点击并鼠标移动 */ onLButtonDownAndMove: List<(sender: Viewer, event: ViewerEvent) => void>; /** 右键点击并鼠标移动 */ onMButtonDownAndMove: List<(sender: Viewer, event: ViewerEvent) => void>; /** 中键点击并鼠标移动 */ onRButtonDownAndMove: List<(sender: Viewer, event: ViewerEvent) => void>; /** 触摸开始 */ onTouchStart: List<(sender: Viewer, event: ViewerEvent) => void>; /** 触摸移动 */ onTouchMove: List<(sender: Viewer, event: ViewerEvent) => void>; /** 触摸结束 */ onTouchEnd: List<(sender: Viewer, event: ViewerEvent) => void>; /** 触摸取消 */ onTouchCancel: List<(sender: Viewer, event: ViewerEvent) => void>; /** 键盘按下 */ onKeyDown: List<(sender: Viewer, event: ViewerEvent) => void>; /** 键盘按住 */ onKeyPress: List<(sender: Viewer, event: ViewerEvent) => void>; /** 键盘松开 */ onKeyUp: List<(sender: Viewer, event: ViewerEvent) => void>; /** 全局键盘按下 */ onWindowKeyDown: List<(sender: Viewer, event: ViewerEvent) => void>; /** 全局键盘长按 */ onWindowKeyPress: List<(sender: Viewer, event: ViewerEvent) => void>; /** 全局键盘松开 */ onWindowKeyUp: List<(sender: Viewer, event: ViewerEvent) => void>; componentsLoaded: List<(viewer: Viewer, args: EventArgs) => void>; name: string; protected _running: boolean; protected _isBusy: boolean; protected _isCache: boolean; protected _camera: Camera; renderPasses: RenderPassCollection; renderObjects: RenderObjectCollection; protected _updateDisplayMode: UpdateDisplayMode; protected _updateInterval: any; private _lastTime; durationTime: number; deltaSeconds: number; protected _viewSegment: Segment; protected _sceneSegment: Segment; protected _modelSegment: Segment; protected _styleSegment: Segment; protected _utilitySegment: Segment; protected _instanceObjectSegment: Segment; protected _viewObjectSegment: Segment; protected _screenSegment: Segment; protected _renderObject: RenderObject; protected _freeze: boolean; protected _onWindowKeyDown: (e: KeyboardEvent) => void; protected _onWindowKeyUp: (e: KeyboardEvent) => void; protected _onWindowKeyPress: (e: KeyboardEvent) => void; process: Process; operatorManager: OperatorManager; updateManager: UpdateManager; /** * 坐标管理器 */ coordinateManager: CoordinateManager; lButtonDown: boolean; rButtonDown: boolean; mButtonDown: boolean; touching: boolean; keyDown: boolean; protected _instanceObjects: NumberKeyList; private _instanceObject; static currentViewer: Viewer; static currentRenderContext: IRenderContext; current_ViewFrustumCulling: boolean; current_CullingMaximumExtent: number; get isBusy(): boolean; set isBusy(value: boolean); get isCache(): boolean; set isCache(value: boolean); get boundingBox(): Float32Array; set boundingBox(value: Float32Array); /** * 设置了lightModel的matrix后,需要重新更新viewer的包围盒. */ updateViewerBoundingbox(): void; private _priorityList; private _finalKeyList; private _finalKeys; private _selectDistanceTolerance; get camera(): Camera; get updateDisplayMode(): UpdateDisplayMode; set updateDisplayMode(value: UpdateDisplayMode); get viewSegment(): Segment; get sceneSegment(): Segment; get modelSegment(): Segment; get styleSegment(): Segment; get utilitySegment(): Segment; get instanceObjectSegment(): Segment; get viewObjectSegment(): Segment; get screenSegment(): Segment; get instanceObject(): RenderInstanceObject; set instanceObject(val: RenderInstanceObject); get renderObject(): RenderObject; set renderObject(value: RenderObject); get unitLength(): number; get freeze(): boolean; set freeze(value: boolean); zUnitLength(z: number): number; get selectDistanceTolerance(): number; set selectDistanceTolerance(selectDistanceTolerance: number); get loadedRenderObjects(): List; constructor(containerId: string); protected initRenderContext(): void; protected initRenderPasses(): void; initManagers(): void; protected updateStates(): boolean; protected onUpdateSize(): void; updateDisplay(): void; run(): void; stop(): void; dispose(): void; findInstanceObject(ro: RenderObject): RenderInstanceObject; findInstanceObjects(ro: RenderObject): NumberKeyList | null; findInstanceObjectByInsParent(insParent: RenderObject, ro: RenderObject): any; findInstanceObjectsByInsParent(insParent: RenderObject, ro: RenderObject): NumberKeyList | null; instantiateRenderObject(insParent: RenderInstanceObject, ro: RenderObject, deep?: boolean): void; deInstantiateRenderObject(parent: RenderInstanceObject, ro: RenderObject): void; initComponents(ro: RenderObject): void; finaComponents(ro: RenderObject): void; initComponent(component: PropertyComponent): void; finaComponent(component: PropertyComponent): void; computeBoundingBox(segment: Segment): any; computeBoundingBoxWithVisibility(segment: Segment, element_types: ElementType): Float32Array; computeViewBoundingBox(segment: Segment | List): any; computeViewBoundingBoxes(segments: Segment[]): any; computeViewBoundingBoxByKey(key: any): Float32Array; selectByPoint(winPos: ArrayLike): List; selectByArea(winArea: ArrayLike, type: AreaSelectionType): List; locateWorld(segment: Segment | number): void; private getKeyPath; getInstanceObjectByPath(path: any): RenderInstanceObject; getRenderObjectByPath(path: any): RenderObject; reset(): void; computeRayTest(origin: ArrayLike, direct: ArrayLike): Float32Array; computeGeometryRayTest(geom: Geometry, origin: ArrayLike, direct: ArrayLike): Float32Array; computePerspectiveNearWorldPos(pixel: Float32Array): Float64Array; computeNearPlaneWorldPos(pixel: Float32Array): Float64Array; convertCoordinate(inCoordinate: CoordinateType, outCoordinate: CoordinateType, inPoint: ArrayLike): Float32Array; /** * 三维坐标转二维坐标,支持多点转换 * @param position 三维坐标列表 * @returns returns 二维坐标列表 */ worldPointToPixelPoint(position: number[][] | Float64Array[] | Float32Array[], isMultiplyModel?: boolean): [number, number][]; /** * 二维坐标转三维坐标,支持多点转换 * @param position 二维坐标列表 * @returns returns 三维坐标列表 */ pixelPointToWorldPoint(position: [number, number][], isMultiplyModel?: boolean): [number, number, number][]; /** * 清除缓存的模型数据 * @returns */ clearCache(): Promise; }