UNPKG

@polygonjs/polygonjs

Version:

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

43 lines (37 loc) 1.31 kB
/** * Sets which node is used as the output of a parent subnet node. * * @remarks * Can only be created inside a subnet ANIM node. * */ import {TypedAnimNode} from './_Base'; import {NodeParamsConfig} from '../utils/params/ParamsConfig'; import {NetworkChildNodeType} from '../../poly/NodeContext'; import {TimelineBuilder} from '../../../core/animation/TimelineBuilder'; class AnimSubnetOutputSopParamsConfig extends NodeParamsConfig {} const ParamsConfig = new AnimSubnetOutputSopParamsConfig(); export class SubnetOutputAnimNode extends TypedAnimNode<AnimSubnetOutputSopParamsConfig> { override paramsConfig = ParamsConfig; static override type(): Readonly<NetworkChildNodeType.OUTPUT> { return NetworkChildNodeType.OUTPUT; } override initializeNode() { this.io.inputs.setCount(1); this.io.outputs.setHasNoOutput(); this.lifecycle.onAfterAdded(this._setParentDirtyBound); this.addPostDirtyHook('makeParentDirty', this._setParentDirtyBound); } override dispose() { super.dispose(); this._setParentDirty(); } override cook(inputContents: TimelineBuilder[]) { const timelineBuilder = inputContents[0]; this.setTimelineBuilder(timelineBuilder); } private _setParentDirtyBound = this._setParentDirty.bind(this); private _setParentDirty() { this.parent()?.setDirty(); } }