@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
70 lines (69 loc) • 2.66 kB
TypeScript
import { BufferGeometry, Object3D, Material, Matrix4, Object3DEventMap } from 'three';
import type { CadGeometry } from './modules/cad/CadCommon';
import type { CsgGeometry } from './modules/csg/CsgCommon';
import type { QuadGeometry } from './modules/quad/QuadGeometry';
import type { SDFGeometry } from './modules/sdf/SDFCommon';
import type { TetGeometry } from './modules/tet/TetGeometry';
import { CoreEntity } from './CoreEntity';
export declare enum CoreObjectType {
THREEJS = "Object3D",
CAD = "CADObject",
CSG = "CSGObject",
QUAD = "QUADObject",
SDF = "SDFObject",
TET = "TetObject"
}
export interface ObjectGeometryMap {
[CoreObjectType.THREEJS]: BufferGeometry;
[CoreObjectType.CAD]: CadGeometry;
[CoreObjectType.CSG]: CsgGeometry;
[CoreObjectType.QUAD]: QuadGeometry;
[CoreObjectType.SDF]: SDFGeometry;
[CoreObjectType.TET]: TetGeometry;
}
export interface ObjectContent<T extends CoreObjectType> {
type: string;
geometry?: ObjectGeometryMap[T];
userData: {
[key: string]: any;
};
name: string;
visible: boolean;
castShadow: boolean;
receiveShadow: boolean;
renderOrder: number;
frustumCulled: boolean;
matrixAutoUpdate: boolean;
material?: Material | Material[];
children: ObjectContent<T>[];
parent: ObjectContent<T> | null;
clone: () => ObjectContent<T>;
dispose?: () => void;
traverse(callback: (object: ObjectContent<T>) => any): void;
applyMatrix4(matrix: Matrix4): void;
add: (...object: any[]) => void;
remove: (...object: any[]) => void;
dispatchEvent: (event: {
type: string | any;
}) => void;
}
type Object3DEventMapExtended<T extends string> = Object3DEventMap & {
[P in T]: any;
};
export type Object3DWithEvent<T extends string> = Object3D<Object3DEventMapExtended<T>>;
export declare function isObject3D<T extends CoreObjectType>(o: ObjectContent<T>): o is Object3D;
export interface ObjectContentCopyPropertiesOptions {
castShadow?: boolean;
receiveShadow?: boolean;
material?: Material | Material[];
}
export declare function objectContentCopyProperties(src: ObjectContent<CoreObjectType>, target: ObjectContent<CoreObjectType>, options?: ObjectContentCopyPropertiesOptions): void;
export interface MergeCompactOptions {
objects: ObjectContent<CoreObjectType>[];
mergedObjects: ObjectContent<CoreObjectType>[];
material?: Material;
objectType: string;
onError: (message: string) => void;
}
export type ObjectBuilder<T extends CoreObjectType> = (object: ObjectContent<T>, entities: CoreEntity[]) => ObjectContent<T> | undefined;
export {};