@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
31 lines (30 loc) • 1.77 kB
TypeScript
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 {};