diff options
Diffstat (limited to 'src/util.ts')
-rw-r--r-- | src/util.ts | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/util.ts b/src/util.ts index 453966e..7129b2b 100644 --- a/src/util.ts +++ b/src/util.ts @@ -33,3 +33,15 @@ export function nextPowerOf2(n: number): number { return i; } + +export class Listenable<T extends any[]> { + private readonly listeners: Array<(...args: T) => void> = []; + + public addListener(listener: (...args: T) => void): void { + this.listeners.push(listener); + } + + protected runListeners(...args: T): void { + this.listeners.forEach((l) => l(...args)); + } +} |