bg2e-js 2.3.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/react/useBg2e.ts +12 -2
package/package.json
CHANGED
package/src/react/useBg2e.ts
CHANGED
|
@@ -15,7 +15,14 @@ function resolveCanvas(canvas: string | HTMLCanvasElement): HTMLCanvasElement |
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
type RendererConstructor<T extends Renderer> = new () => T;
|
|
19
|
+
type AppControllerConstructor<T extends AppController> = new () => T;
|
|
20
|
+
|
|
21
|
+
export default function useBg2e<R extends Renderer, A extends AppController>(
|
|
22
|
+
target: string | HTMLCanvasElement,
|
|
23
|
+
RendererType: RendererConstructor<R>,
|
|
24
|
+
AppControllerType: AppControllerConstructor<A>
|
|
25
|
+
) {
|
|
19
26
|
const canvas = useMemo(() => {
|
|
20
27
|
if (typeof document === "undefined") return null; // SSR guard
|
|
21
28
|
return resolveCanvas(target);
|
|
@@ -41,6 +48,9 @@ export default function useBg2e(target: string | HTMLCanvasElement, renderer: Re
|
|
|
41
48
|
return;
|
|
42
49
|
}
|
|
43
50
|
|
|
51
|
+
const renderer = new RendererType();
|
|
52
|
+
const appController = new AppControllerType();
|
|
53
|
+
|
|
44
54
|
const bg2Canvas = new Canvas(canvas, renderer);
|
|
45
55
|
const mainLoop = new MainLoop(bg2Canvas, appController);
|
|
46
56
|
|
|
@@ -51,7 +61,7 @@ export default function useBg2e(target: string | HTMLCanvasElement, renderer: Re
|
|
|
51
61
|
createdRef.current = true;
|
|
52
62
|
|
|
53
63
|
forceUpdate((x) => x + 1);
|
|
54
|
-
}, []);
|
|
64
|
+
}, [canvas, RendererType, AppControllerType]);
|
|
55
65
|
|
|
56
66
|
return {
|
|
57
67
|
mainLoop: mainLoopRef.current,
|