mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
codebase overhaul (#697)
This commit is contained in:
@@ -0,0 +1,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 });
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user