@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
49 lines (48 loc) • 1.63 kB
JavaScript
;
import { TypedEventNode } from "./_Base";
import { EventConnectionPointType } from "../utils/io/connections/Event";
const INPUT_NAME = "trigger";
import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig";
class PassEventParamsConfig extends NodeParamsConfig {
constructor() {
super(...arguments);
/** @param number of possible outputs */
this.outputsCount = ParamConfig.INTEGER(5, {
range: [1, 10],
rangeLocked: [true, false]
});
}
}
const ParamsConfig = new PassEventParamsConfig();
export class SequenceEventNode extends TypedEventNode {
constructor() {
super(...arguments);
this.paramsConfig = ParamsConfig;
}
static type() {
return "sequence";
}
initializeNode() {
this.io.connection_points.set_input_name_function(() => INPUT_NAME);
this.io.connection_points.set_expected_input_types_function(() => [EventConnectionPointType.BASE]);
this.io.connection_points.set_expected_output_types_function(this._expected_output_types.bind(this));
this.io.connection_points.set_output_name_function(this._output_name.bind(this));
}
_expected_output_types() {
const list = new Array(this.pv.outputsCount);
list.fill(EventConnectionPointType.BASE);
return list;
}
_output_name(index) {
return `out${index}`;
}
processEvent(event_context) {
const connectionPoints = this.io.outputs.namedOutputConnectionPoints();
if (!connectionPoints) {
return;
}
for (const connectionPoint of connectionPoints) {
this.dispatchEventToOutput(connectionPoint.name(), event_context);
}
}
}