UNPKG

@realsee/dnalogel

Version:
189 lines (188 loc) 6.4 kB
import type { Five } from '@realsee/five'; import type * as THREE from 'three'; import type { BaseObjectConfig } from './Objects/Base'; import { Subscribe } from '../shared-utils/Subscribe'; import { IObject3D } from '../shared-utils/three/IObject3D'; import type { PartialDeep } from 'type-fest'; import { Polyline } from './Objects/Polyline'; import { Point } from './Objects/Point'; import { Polygon } from './Objects/Polygon'; import { Prism } from './Objects/Prism'; import { Rectangle } from './Objects/Rectangle'; import { Circle } from './Objects/Circle'; import { Cylinder } from './Objects/Cylinder'; import { Box } from './Objects/Box'; import type { PolylineImportData, PointImportData, PolygonImportData, PrismImportData, RectangleImportData, CircleImportData, CylinderImportData, BoxImportData } from './typings'; export type { SculptData } from './typings'; import type { AreaStyle, PointStyle, PolylineStyle, PrismStyle, RectangleStyle, CircleStyle, CylinderStyle, BoxStyle } from './typings'; type BuiltInData = PolylineImportData | PointImportData | PolygonImportData | PrismImportData | RectangleImportData | CircleImportData | CylinderImportData | BoxImportData; type BuiltInItem = Polyline | Point | Polygon | Prism | Rectangle | Circle | Cylinder | Box; type Theme = PartialDeep<{ point: PointStyle; polyline: PolylineStyle; polygon: AreaStyle; prism: PrismStyle; rectangle: RectangleStyle; circle: CircleStyle; cylinder: CylinderStyle; box: BoxStyle; }>; interface Data { items: Array<BuiltInData>; } type Event = { /** * @description: 点击事件 * @param {BuiltInItem} item 点击的物体 * 返回 false 来禁用 Five 默认行为 */ click: (item: BuiltInItem) => void | false; }; export declare class Sculpt extends Subscribe<Event> { static modules: { five: Five; _cursor: import("./utils/Modules/Cursor").Cursor; _pointSelector: import("../shared-utils/three/PointSelector").PointSelector; _fiveDomEvents: import("../shared-utils/five/FiveDomEvents").FiveDomEvents; _object3DHelper: import("..").Object3DHelperController; inited: boolean; readonly cursor: import("./utils/Modules/Cursor").Cursor; readonly pointSelector: import("../shared-utils/three/PointSelector").PointSelector; readonly fiveDomEvents: import("../shared-utils/five/FiveDomEvents").FiveDomEvents; readonly object3DHelper: import("..").Object3DHelperController; init: (five: Five) => void; }; get data(): { items: ({ points: [number, number, number][]; style: { lineColor: number; lineWidth: number; dashed: boolean; }; id: string; type: string; } | { point: [number, number, number]; style: { color: number; size: number; }; id: string; type: string; } | { points: [number, number, number][]; style: { color: number; lineColor: number; lineWidth: number; }; id: string; type: string; } | { readonly points: [number, number, number][]; readonly heightPoint: [number, number, number]; readonly style: { readonly color: number; readonly lineWidth: number; readonly lineColor: number; }; readonly id: string; readonly type: string; } | { points: [import("..").ArrayPosition, import("..").ArrayPosition, import("..").ArrayPosition]; style: { color: number; lineWidth: number; lineColor: number; }; id: string; type: string; } | { center: [number, number, number]; normal: [number, number, number]; radius: number; style: { color: number; }; id: string; type: string; } | { bottomCenter: [number, number, number]; topCenter: [number, number, number]; radius: number; style: { color: number; }; id: string; type: string; })[]; }; group: IObject3D; get items(): BuiltInItem[]; private five; private theme; constructor(five: Five, theme?: Theme); /** * @description: 加载数据 展示 */ load(data: Data, config?: Partial<BaseObjectConfig>): void; /** * @description: 获取物体实例 */ getItemById(id: string): BuiltInItem; /** * @description: 放置物体 */ putObject(object: THREE.Object3D): import("..").Object3DHelperController; /** * @description: 开始绘制点 */ createPoint(params?: Parameters<Point['create']>[0]): Promise<Point>; /** * @description: 开始绘制空间折线 */ createPolyline(params?: Parameters<Polyline['create']>[0]): Promise<Polyline>; /** * @description: 开始绘制平面多边形 */ createPolygon(params?: Parameters<Polygon['create']>[0]): Promise<Polygon>; /** * @description: 开始绘制多棱柱 */ createPrism(params?: Parameters<Prism['create']>[0]): Promise<Prism>; /** * @description: 开始绘制矩形 */ createRectangle(params?: Parameters<Rectangle['create']>[0]): Promise<Rectangle>; /** * @description: 开始绘制圆形 */ createCircle(params?: Parameters<Circle['create']>[0]): Promise<Circle>; /** * @description: 开始绘制圆柱 */ createCylinder(params?: Parameters<Cylinder['create']>[0]): Promise<Cylinder>; /** * @description: 开始绘制 Box */ createBox(params?: Parameters<Box['create']>[0]): Promise<Box>; /** * @description: 撤销 */ undo(): void; /** * @description: 重做 */ redo(): void; /** * @description: 清空数据 */ clear(): void; private createItem; private needsRender; } /** * @description: Sculpt 插件 */ export declare const SculptPlugin: (five: Five) => Sculpt;