From 7bf0984698e43b9aa2dd879f65951318ed410390 Mon Sep 17 00:00:00 2001 From: Maze <167211895+mazeincoding@users.noreply.github.com> Date: Sat, 31 Jan 2026 00:20:04 +0100 Subject: codebase overhaul (#697) --- apps/web/src/services/renderer/nodes/base-node.ts | 35 +++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 apps/web/src/services/renderer/nodes/base-node.ts (limited to 'apps/web/src/services/renderer/nodes/base-node.ts') diff --git a/apps/web/src/services/renderer/nodes/base-node.ts b/apps/web/src/services/renderer/nodes/base-node.ts new file mode 100644 index 00000000..55bd055a --- /dev/null +++ b/apps/web/src/services/renderer/nodes/base-node.ts @@ -0,0 +1,35 @@ +import type { CanvasRenderer } from "../canvas-renderer"; + +export type BaseNodeParams = object | undefined; + +export class BaseNode { + params: Params; + + constructor(params?: Params) { + this.params = params ?? ({} as Params); + } + + children: BaseNode[] = []; + + add(child: BaseNode) { + this.children.push(child); + return this; + } + + remove(child: BaseNode) { + this.children = this.children.filter((c) => c !== child); + return this; + } + + async render({ + renderer, + time, + }: { + renderer: CanvasRenderer; + time: number; + }): Promise { + for (const child of this.children) { + await child.render({ renderer, time }); + } + } +} -- cgit v1.3.1