polygonjs-engine
Version:
node-based webgl 3D engine https://polygonjs.com
64 lines (63 loc) • 1.73 kB
JavaScript
import {TypedEventNode} from "./_Base";
export const EVENT_PARAM_OPTIONS = {
visibleIf: {active: 1},
callback: (node) => {
BaseInputEventNodeClass.PARAM_CALLBACK_update_register(node);
}
};
export class TypedInputEventNode extends TypedEventNode {
constructor() {
super(...arguments);
this._active_event_names = [];
}
initializeBaseNode() {
super.initializeBaseNode();
const register = () => {
this.scene().eventsDispatcher.registerEventNode(this);
};
const unregister = () => {
this.scene().eventsDispatcher.unregisterEventNode(this);
};
this.lifecycle.add_on_add_hook(register);
this.lifecycle.add_delete_hook(unregister);
this.params.onParamsCreated("update_register", () => {
this._update_register();
});
}
process_event(event_context) {
if (!this.pv.active) {
return;
}
if (!event_context.event) {
return;
}
this.dispatch_event_to_output(event_context.event.type, event_context);
}
static PARAM_CALLBACK_update_register(node) {
node._update_register();
}
_update_register() {
this._update_active_event_names();
this.scene().eventsDispatcher.updateViewerEventListeners(this);
}
_update_active_event_names() {
this._active_event_names = [];
if (this.pv.active) {
const list = this.accepted_event_types();
for (let name of list) {
const param = this.params.get(name);
if (param && param.value) {
this._active_event_names.push(name);
}
}
}
}
active_event_names() {
return this._active_event_names;
}
}
export class BaseInputEventNodeClass extends TypedInputEventNode {
accepted_event_types() {
return [];
}
}