@realsee/dnalogel
Version:
189 lines (188 loc) • 6.4 kB
TypeScript
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;