UNPKG

@orca-fe/x-map

Version:
80 lines (79 loc) 2.84 kB
import { AxesHelper, Color, DirectionalLight, GridHelper, Matrix4, Object3D, PerspectiveCamera, Scene, WebGLRenderer, WebGLRendererParameters } from 'three'; import ResizeObserver from 'resize-observer-polyfill'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; import { EventEmitter } from 'events'; import IMap from '../core/IMap'; import { Mat4 } from '../defs'; export interface SimpleSceneOptions { axesAndGround?: boolean; ambientLightColor?: Color | string | number; ambientLightIntensity?: number; rendererOptions?: Omit<WebGLRendererParameters, 'canvas'>; cameraPosition?: [number, number, number]; cameraLookAt?: [number, number, number]; autoResize?: boolean; background?: Scene['background']; orbitControl?: false | [number, number]; camera?: PerspectiveCamera; preventDefaultRender?: boolean; rayCaster?: boolean; map?: IMap; } export interface LightOptions { direction?: [number, number, number]; color?: Color | string | number; intensity?: number; } export default class SimpleThree extends EventEmitter { dom: HTMLDivElement; renderer: WebGLRenderer; scene: Scene; rayCasterObjects: Set<Object3D<import("three").Event>>; camera: PerspectiveCamera; options: SimpleSceneOptions; observer?: ResizeObserver; control?: OrbitControls; preventDefaultRender?: boolean; map?: IMap; protected mousedown: boolean; domSize: [number, number]; resizeTime: number; autoResize: boolean; constructor(dom: HTMLDivElement, options?: SimpleSceneOptions); computeSize(): void; handleWindowMouseup: () => void; protected handleWindowResize: () => void; protected disposed: boolean; dispose(): void; /** * 添加平行光 * @param options 平行光选项 * @returns */ addDirectionalLight(options?: LightOptions): DirectionalLight; axes?: AxesHelper; /** * 添加坐标轴方向 * @param size 长度 */ addAxes(size?: number): AxesHelper; removeAxes(): void; grid?: GridHelper; /** * 添加大地网格 * @param size 网格大小 * @param divisions 网格拆分数量 * @param color1 横向网格线颜色 * @param color2 纵向网格线颜色 */ addGrid(size?: number, divisions?: number, color1?: Color | string | number, color2?: Color | string | number): GridHelper; removeGrid(): void; cameraProjectionMatrix?: Matrix4; cameraViewMatrix?: Matrix4; updateMatrix(matrix: [Mat4, Mat4] | Matrix4, render?: boolean): void; protected animationKey?: number; animate(callback?: () => unknown): void; stop(): void; render(clear?: boolean): void; resize(): void; }