UNPKG

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.

69 lines 2.91 kB
import { BufferGeometry, BufferGeometryEventMap, NormalBufferAttributes, NormalOrGLBufferAttributes, Vector3 } from 'three'; import { IUiConfigContainer, UiObjectConfig } from 'uiconfig.js'; import { AnyOptions } from 'ts-browser-helpers'; import { IObject3D } from './IObject'; import { IImportResultUserData } from '../assetmanager'; export interface IGeometryUserData extends IImportResultUserData { /** * Automatically dispose geometry when not used by any object in the scene * @default true */ disposeOnIdle?: boolean; /** * If this is a placeholder/dummy geometry. * These geometries are not saved in asset/glTF files. * @internal - todo implement not export same as placeholder materials */ isPlaceholder?: boolean; [key: string]: any; } export interface IGeometry<Attributes extends NormalOrGLBufferAttributes = NormalBufferAttributes, TE extends IGeometryEventMap = IGeometryEventMap> extends BufferGeometry<Attributes, TE>, IUiConfigContainer { assetType: 'geometry'; setDirty(options?: IGeometrySetDirtyOptions): void; refreshUi(): void; uiConfig?: UiObjectConfig; isBufferGeometry: true; /** * Centers the geometry. * @param offset - returns the offset applied to the geometry * @param keepWorldPosition - Updates the attached meshes, so that the world position of the geometry remains the same. * @param setDirty */ center(offset?: Vector3, keepWorldPosition?: boolean, setDirty?: boolean): BufferGeometry; /** * Same as center but returns a function to undo the centering * @param offset * @param keepWorldPosition */ center2(offset?: Vector3, keepWorldPosition?: boolean): () => void; userData: IGeometryUserData; /** * Objects in the scene that are using this geometry. * This is set in the {@link Object3DManager} when the objects are added/removed from the scene. Do not modify this set directly. */ appliedMeshes: Set<IObject3D>; /** * Disposes the geometry from the GPU. * Set force to false if not sure the geometry is used by any object in the scene. * // todo add check for visible in scene also? or is that overkill * @param force - when true, same as three.js dispose. when false, only disposes if disposeOnIdle not false and not used by any object in the scene. default: true */ dispose(force?: boolean): void; /** * @internal */ ['_uiConfig']?: UiObjectConfig; } export type IGeometrySetDirtyOptions = AnyOptions & { bubbleToObject?: boolean; }; export type IGeometryEventMap = BufferGeometryEventMap; declare module 'three' { interface BufferGeometryEventMap { geometryUpdate: { geometry: IGeometry; bubbleToObject?: boolean; } & IGeometrySetDirtyOptions; } } //# sourceMappingURL=../src/core/IGeometry.d.ts.map