@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
38 lines (37 loc) • 1.15 kB
JavaScript
;
import { NodeBaseState } from "./Base";
export class NodeTimeDependentState extends NodeBaseState {
active() {
return this.paramsTimeDependent() || this.inputsTimeDependent();
}
paramsTimeDependent() {
const paramNames = this.node.params.names;
for (const paramName of paramNames) {
const param = this.node.params.get(paramName);
if (param && param.states.timeDependent.active()) {
return true;
}
}
return false;
}
inputsTimeDependent() {
const inputs = this.node.io.inputs.inputs();
for (const input of inputs) {
if (input && input.states.timeDependent.active()) {
return true;
}
}
return false;
}
forceTimeDependent() {
const predecessorIds = this.node.graphPredecessorIds();
const frameNode = this.node.scene().timeController.graphNode;
if (predecessorIds == null || !predecessorIds.includes(frameNode.graphNodeId())) {
this.node.addGraphInput(frameNode, false);
}
}
unforceTimeDependent() {
const frameNode = this.node.scene().timeController.graphNode;
this.node.removeGraphInput(frameNode);
}
}