UNPKG

polygonjs-engine

Version:

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

70 lines (69 loc) 2.38 kB
import {TypedEventNode} from "./_Base"; import {EventConnectionPoint, EventConnectionPointType} from "../utils/io/connections/Event"; var LimitEventInput; (function(LimitEventInput2) { LimitEventInput2["TRIGGER"] = "trigger"; LimitEventInput2["RESET"] = "reset"; })(LimitEventInput || (LimitEventInput = {})); var LimitEventOutput; (function(LimitEventOutput2) { LimitEventOutput2["OUT"] = "out"; LimitEventOutput2["LAST"] = "last"; })(LimitEventOutput || (LimitEventOutput = {})); import {NodeParamsConfig, ParamConfig} from "../utils/params/ParamsConfig"; class LimitEventParamsConfig extends NodeParamsConfig { constructor() { super(...arguments); this.maxCount = ParamConfig.INTEGER(5, { range: [0, 10], rangeLocked: [true, false] }); this.reset = ParamConfig.BUTTON(null, { callback: (node) => { LimitEventNode.PARAM_CALLBACK_reset(node); } }); } } const ParamsConfig2 = new LimitEventParamsConfig(); export class LimitEventNode extends TypedEventNode { constructor() { super(...arguments); this.params_config = ParamsConfig2; this._process_count = 0; this._last_dispatched = false; } static type() { return "limit"; } initializeNode() { this.io.inputs.setNamedInputConnectionPoints([ new EventConnectionPoint(LimitEventInput.TRIGGER, EventConnectionPointType.BASE, this.process_event_trigger.bind(this)), new EventConnectionPoint(LimitEventInput.RESET, EventConnectionPointType.BASE, this.process_event_reset.bind(this)) ]); this.io.outputs.setNamedOutputConnectionPoints([ new EventConnectionPoint(LimitEventOutput.OUT, EventConnectionPointType.BASE), new EventConnectionPoint(LimitEventOutput.LAST, EventConnectionPointType.BASE) ]); } process_event(event_context) { } process_event_trigger(event_context) { if (this._process_count < this.pv.maxCount) { this._process_count += 1; this.dispatch_event_to_output(LimitEventOutput.OUT, event_context); } else { if (!this._last_dispatched) { this._last_dispatched = true; this.dispatch_event_to_output(LimitEventOutput.LAST, event_context); } } } process_event_reset(event_context) { this._process_count = 0; this._last_dispatched = false; } static PARAM_CALLBACK_reset(node) { node.process_event_reset({}); } }