UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

31 lines (30 loc) 1.77 kB
import { Object3D } from 'three'; import { WatchCallback, WatchOptions, WatchSource } from '@vue-reactivity/watch'; import { PolyScene } from '../../../../engine/scene/PolyScene'; import { BaseSopNodeType } from '../../../../../src/engine/nodes/sop/_Base'; import { JsIConnectionPointTypeToDataTypeMap, ParamConvertibleJsType } from '../../../../engine/nodes/utils/io/connections/Js'; export interface CoreObjectHelperOptions<S extends PolyScene> { scene: S; object: Object3D; } interface CreateObjectOptions<S extends PolyScene> { scene: S; object: Object3D; } type OnAttributeChangeCallback<T> = (newValue: T, prevValue: T) => void; export declare class CoreObjectHelper<S extends PolyScene> { readonly options: CoreObjectHelperOptions<S>; private _watchStopHandles; readonly scene: S; readonly object: Object3D; constructor(options: CoreObjectHelperOptions<S>); dispose(): void; onAttributeUpdate<T extends ParamConvertibleJsType>(attribName: string, attribType: T, defaultValue: JsIConnectionPointTypeToDataTypeMap[T], callback: OnAttributeChangeCallback<JsIConnectionPointTypeToDataTypeMap[T]>): void; watch<T, Immediate extends Readonly<boolean> = false>(source: WatchSource<T>, cb: WatchCallback<T, Immediate extends true ? T | undefined : T>, options?: WatchOptions<Immediate>): void; } type CreateCoreObjectHelper<S extends PolyScene, T extends CoreObjectHelper<S>> = (options: CreateObjectOptions<S>) => T; interface ObjectFromNodeOptions { traverse?: boolean; } export declare function objectFromNode<S extends PolyScene, T extends CoreObjectHelper<S>>(node: BaseSopNodeType, objectName: string, creatFunction: CreateCoreObjectHelper<S, T>, options?: ObjectFromNodeOptions): Promise<T | undefined>; export {};