summaryrefslogtreecommitdiff
path: root/apps/web/src/services/renderer/nodes/base-node.ts
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-04-13 04:41:17 +0200
committerMaze Winther <mazewinther@gmail.com>2026-04-13 05:08:29 +0200
commitcad88ee4d1c9e06e7529b88ef5e5d3fdf3f89149 (patch)
tree0bfc1fcb18b3da4969afa2836bb65e6a5e25d123 /apps/web/src/services/renderer/nodes/base-node.ts
parent36efdf66e707c818b81009acf8a00630a0309ca1 (diff)
downloadopencut-cad88ee4d1c9e06e7529b88ef5e5d3fdf3f89149.tar.gz
refactor: rendering pipeline
Made-with: Cursor
Diffstat (limited to 'apps/web/src/services/renderer/nodes/base-node.ts')
-rw-r--r--apps/web/src/services/renderer/nodes/base-node.ts27
1 files changed, 9 insertions, 18 deletions
diff --git a/apps/web/src/services/renderer/nodes/base-node.ts b/apps/web/src/services/renderer/nodes/base-node.ts
index 55bd055a..1d6fc0e4 100644
--- a/apps/web/src/services/renderer/nodes/base-node.ts
+++ b/apps/web/src/services/renderer/nodes/base-node.ts
@@ -1,35 +1,26 @@
-import type { CanvasRenderer } from "../canvas-renderer";
-
export type BaseNodeParams = object | undefined;
+export type AnyBaseNode = BaseNode<BaseNodeParams, unknown>;
-export class BaseNode<Params extends BaseNodeParams = BaseNodeParams> {
+export class BaseNode<
+ Params extends BaseNodeParams = BaseNodeParams,
+ Resolved = unknown,
+> {
params: Params;
+ resolved: Resolved | null = null;
constructor(params?: Params) {
this.params = params ?? ({} as Params);
}
- children: BaseNode[] = [];
+ children: AnyBaseNode[] = [];
- add(child: BaseNode) {
+ add(child: AnyBaseNode) {
this.children.push(child);
return this;
}
- remove(child: BaseNode) {
+ remove(child: AnyBaseNode) {
this.children = this.children.filter((c) => c !== child);
return this;
}
-
- async render({
- renderer,
- time,
- }: {
- renderer: CanvasRenderer;
- time: number;
- }): Promise<void> {
- for (const child of this.children) {
- await child.render({ renderer, time });
- }
- }
}