blob: 55bd055a4ce4cd85c10c5b62ee7f75e658860d7b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import type { CanvasRenderer } from "../canvas-renderer";
export type BaseNodeParams = object | undefined;
export class BaseNode<Params extends BaseNodeParams = BaseNodeParams> {
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<void> {
for (const child of this.children) {
await child.render({ renderer, time });
}
}
}
|