threepipe
Version:
A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.
73 lines • 3.79 kB
TypeScript
import { Class } from 'ts-browser-helpers';
import { AViewerPluginSync, ThreeViewer } from '../../viewer';
import { BufferGeometry2 } from '../../core/geometry/BufferGeometry2';
import { IGeometry } from '../../core/IGeometry';
import { IMaterial } from '../../core/IMaterial';
import { IMesh, IObject3D, IObject3DEventMap } from '../../core/IObject';
import { ISceneEventMap } from '../../core/IScene';
import { TorusGeometryGenerator } from './primitives/TorusGeometryGenerator';
import { CircleGeometryGenerator } from './primitives/CircleGeometryGenerator';
import { BoxGeometryGenerator } from './primitives/BoxGeometryGenerator';
import { SphereGeometryGenerator } from './primitives/SphereGeometryGenerator';
import { PlaneGeometryGenerator } from './primitives/PlaneGeometryGenerator';
import { CylinderGeometryGenerator } from './primitives/CylinderGeometryGenerator';
import { TubeGeometryGenerator } from './primitives/TubeGeometryGenerator';
import { ShapeGeometryGenerator } from './primitives/ShapeGeometryGenerator';
import { TubeShapeGeometryGenerator } from './primitives/TubeShapeGeometryGenerator';
import { LineGeometryGenerator } from './primitives/LineGeometryGenerator';
import { AGeometryGenerator } from './AGeometryGenerator';
export interface IGeometryGeneratorMap extends Record<string, AGeometryGenerator> {
plane: PlaneGeometryGenerator;
sphere: SphereGeometryGenerator;
box: BoxGeometryGenerator;
circle: CircleGeometryGenerator;
torus: TorusGeometryGenerator;
cylinder: CylinderGeometryGenerator;
tube: TubeGeometryGenerator;
shape: ShapeGeometryGenerator;
tubeShape: TubeShapeGeometryGenerator;
line: LineGeometryGenerator;
}
/**
* GeometryGeneratorPlugin
*
* Geometry generator plugin to create updatable parametric objects/geometries.
* Built-in generators: plane, sphere, box, circle, torus, cylinder, tube, shape, tubeShape, line.
*
* Additional generators (text) can be registered at runtime via the `generators` property
* or by using `GeometryGeneratorExtrasPlugin` from `@threepipe/plugin-geometry-generator`.
*
* @category Plugins
*/
export declare class GeometryGeneratorPlugin extends AViewerPluginSync {
static readonly PluginType = "GeometryGeneratorPlugin";
enabled: boolean;
toJSON: any;
generators: IGeometryGeneratorMap;
defaultMeshClass: Class<IObject3D>;
defaultMaterialClass: Class<IMaterial>;
defaultGeometryClass: Class<IGeometry>;
generateObject<T extends keyof IGeometryGeneratorMap & string = string, TGeometry extends IGeometry = IGeometry, TMaterial extends IMaterial = IMaterial, TG extends AGeometryGenerator = IGeometryGeneratorMap[T]>(type: T, { mesh, geometry, material, ...params }?: Partial<TG['defaultParams']> & {
mesh?: IMesh<IObject3DEventMap, TGeometry, TMaterial>;
geometry?: TGeometry;
material?: TMaterial;
}): IMesh<IObject3DEventMap, TGeometry, TMaterial>;
generateGeometry(type: string, params: any, geometry?: IGeometry): IGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap> | BufferGeometry2<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap>;
updateGeometry(geometry: IGeometry, params?: any): void;
onAdded(viewer: ThreeViewer): void;
onRemove(viewer: ThreeViewer): void;
private _objectAdd;
private _objectRemove;
protected _geometryUpdate: (e: ISceneEventMap["geometryUpdate"]) => void;
uiConfig: {
type: string;
label: string;
children: (() => {
type: string;
uuid: string;
label: string;
value: () => Promise<void>;
}[])[];
};
}
//# sourceMappingURL=../../src/plugins/geometry/GeometryGeneratorPlugin.d.ts.map