@orca-fe/x-map
Version:
52 lines (51 loc) • 1.75 kB
TypeScript
import { InstancedMesh, MeshBasicMaterial } from 'three';
import { BufferGeometry } from 'three/src/core/BufferGeometry';
import ThreeObject, { ThreeObjectOptions } from './ThreeObject';
import { Point } from '../../defs';
export interface IconObjectOptions extends ThreeObjectOptions {
maxZoom?: number;
minZoom?: number;
z?: number;
opacity?: number;
data?: Point[];
width?: number;
height?: number;
src?: string;
hoverSrc?: string;
checkedSrc?: string;
shape?: 'circle' | 'rect';
}
export default class IconObject extends ThreeObject {
maxZoom?: number;
minZoom?: number;
z: number;
opacity: number;
data: Point[];
shape?: IconObjectOptions['shape'];
width: number;
height: number;
src: string;
hoverSrc?: string;
checkedSrc?: string;
protected ringMesh?: InstancedMesh;
protected dataMesh?: InstancedMesh;
protected hoverMesh?: InstancedMesh;
protected checkedMesh?: InstancedMesh;
protected material: MeshBasicMaterial;
protected hoverMaterial: MeshBasicMaterial;
protected checkedMaterial: MeshBasicMaterial;
protected checkKey?: string;
protected hoverKey?: string;
constructor(options?: IconObjectOptions);
keyCache: WeakMap<InstancedMesh<BufferGeometry, import("three").Material | import("three").Material[]>, Record<string | number, number>>;
createObject: () => void;
lastRotate: number;
lastPitch: number;
lastScale: number;
updatePosition(): void;
checkedIndex: number;
check(index: number): void;
hoverIndex: number;
protected hover(index: number): void;
setOptions(options: Partial<IconObjectOptions>): void;
}