///
import * as THREE from 'three';
import * as TWEEN from '@tweenjs/tween.js';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
import Stats from 'three/examples/jsm/libs/stats.module.js';
import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer';
import { AreaMapProps, MapPath } from '../type';
import { Events } from './MapEvent';
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
import { CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer';
type OtherProps = {
setMapPath: (paths: MapPath[]) => void;
setLoadStatus: (status: boolean) => void;
mapHandleEvents: (data: any, type: 'click' | 'doubleClick' | 'mouseenter' | 'mouseleave' | 'mouseout') => void;
};
interface CreateThreeMapProps extends AreaMapProps {
el: HTMLDivElement;
areaMapProps: AreaMapProps;
events?: {
[key: string]: {
[key: string]: () => void;
};
};
otherProp: OtherProps;
}
type MaterialObj = {
sideMaterial: THREE.MeshPhongMaterial;
frontMaterial: THREE.MeshPhongMaterial;
justAreaLineMaterial: THREE.LineBasicMaterial;
backAreaLineMaterial: THREE.LineBasicMaterial;
subSideMaterial?: THREE.MeshPhongMaterial;
subFrontMaterial?: THREE.MeshPhongMaterial;
subJustAreaLineMaterial?: THREE.LineBasicMaterial;
subBackAreaLineMaterial?: THREE.LineBasicMaterial;
};
export default class CreateThreeMap {
el: HTMLDivElement;
areaMapProps: AreaMapProps;
width: number;
height: number;
otherProp: OtherProps;
_base: string;
uuid: string;
mapData: any;
mapCache: Map;
events?: {
[key: string]: {
[key: string]: () => void;
};
};
__event?: Events;
level: number;
isLeaf: boolean;
RIH: MapPath[];
materialObj?: MaterialObj;
controllerChangeFn: () => false | undefined;
renderer?: THREE.WebGLRenderer;
scene?: THREE.Scene;
camera?: THREE.PerspectiveCamera;
controller?: OrbitControls;
composer?: EffectComposer;
mapObj: THREE.Object3D;
mapGroud: THREE.Group;
stats?: Stats;
selectObj?: THREE.Object3D;
css2dRenderer?: CSS2DRenderer;
css3dRenderer?: CSS3DRenderer;
clock: THREE.Clock;
animateConfig: {
FPS: number;
time: number;
first: boolean;
};
labelArr: HTMLDivElement[];
animateId?: number;
offset: {
x: number;
y: number;
};
scale: {
x: number;
y: number;
};
childComponentUpdataFn: {
[key: string]: {
fn: () => void;
target: any;
};
};
preAdcode: number | string;
hasChildCom: {};
isRIHRunning: boolean;
appearanceAnimate?: TWEEN.Tween;
isDestroy: boolean;
floatAreaAnimate?: TWEEN.Tween;
floatChilds: THREE.Object3D[];
floatCode: string;
constructor(options: CreateThreeMapProps);
init(): Promise;
updataMap(options: AreaMapProps): Promise;
drawMap(updataCamera?: boolean): void;
initMaterial(): void;
initCss2dRenderer(flag?: boolean): void;
initCss3dRenderer(): void;
downUpperdrill(type: 'down' | 'up' | 'path', properties?: any): Promise;
getMapInfo(): Promise;
getData(url: string): Promise;
setCamera(): void;
setController(): void;
LoadRenderer(): void;
cssRenderer(up?: string): false | undefined;
animate(): void;
upDataMapPath(): void;
initEvent(): void;
initStats(): Stats;
buildAuxSystem(): void;
resize(w: any, h: any): void;
destroy(): void;
}
export {};