xgpu
Version:
XGPU is an extendable library for WebGPU that provides a higher-level, easy-to-use interface for building rendering engines or processing numeric data. It handles automatic data binding, buffer alignment, variable declarations in shaders, and more. XGPU i
35 lines (34 loc) • 1.24 kB
JavaScript
export class EventDispatcher {
eventListeners = {};
constructor() {
}
addEventListener(eventName, callback, removeListenerAfterDispatch = false) {
if (!this.eventListeners[eventName])
this.eventListeners[eventName] = [];
if (removeListenerAfterDispatch)
callback.removeAfter = true;
this.eventListeners[eventName].push(callback);
}
removeEventListener(eventName, callback) {
if (this.eventListeners[eventName]) {
const id = this.eventListeners[eventName].indexOf(callback);
if (id != -1) {
this.eventListeners[eventName].splice(id, 1);
}
}
}
clearEvents(eventName) {
this.addEventListener[eventName] = [];
}
hasEventListener(eventName) { return !!this.eventListeners[eventName]; }
dispatchEvent(eventName, eventData) {
if (this.eventListeners[eventName]) {
const t = [...this.eventListeners[eventName]];
t.forEach(callback => {
callback(eventData);
if (callback.removeAfter)
this.removeEventListener(eventName, callback);
});
}
}
}