This commit is contained in:
kolaflash
2026-01-09 00:42:48 +01:00
parent 3c786441bb
commit f96fd337da
2 changed files with 11 additions and 5 deletions
+4 -4
View File
@@ -33,7 +33,7 @@ export type Scene = {
}; };
export type Process = (ctx: CanvasRenderingContext2D, delta: number) => void; export type Process = (ctx: CanvasRenderingContext2D, delta: number) => void;
export type PreProcess = () => void; export type PreProcess = (entities: EntityInstanceMap) => void;
export type PostProcess = () => void; export type PostProcess = () => void;
export type SceneChangeHandler = (to: SceneData, from: SceneData) => void; export type SceneChangeHandler = (to: SceneData, from: SceneData) => void;
@@ -121,7 +121,7 @@ export function useScene(data: SceneData): {
) => (name: T[number]) => Promise<void>; ) => (name: T[number]) => Promise<void>;
process: (fn: Process) => void; process: (fn: Process) => void;
preProcess: (fn: PreProcess) => void; preProcess: (fn: PreProcess) => void;
postProcess: (fn: PreProcess) => void; postProcess: (fn: PostProcess) => void;
} { } {
sceneDataMap.set(data.name, data); sceneDataMap.set(data.name, data);
sceneEntiyMap.set(data.name, new Map()); sceneEntiyMap.set(data.name, new Map());
@@ -166,12 +166,12 @@ export async function setScene(name: string): Promise<void> {
const preProcess = scenePreProcessMap.get(name); const preProcess = scenePreProcessMap.get(name);
if (preProcess) { if (preProcess) {
preProcess(); preProcess(sceneEntiyMap.get(name)!);
} }
const postProcess = scenePostProcessMap.get(currentScene.data.name); const postProcess = scenePostProcessMap.get(currentScene.data.name);
if (postProcess) { if (postProcess) {
postProcess(); postProcess(sceneEntiyMap.get(name)!);
} }
currentScene.data = data; currentScene.data = data;
+7 -1
View File
@@ -5,6 +5,12 @@ const { process, preProcess, linkScenes } = useScene(data);
linkScenes(["fooScene", "fuzzScene"] as const); linkScenes(["fooScene", "fuzzScene"] as const);
preProcess(() => {}); preProcess((entityInstanceMap) => {
const entity = entityInstanceMap.get(data.entities[0].name);
const instance = entity!.instances[0];
instance.position.x = data.width - 16;
instance.position.y = data.height - 16;
});
process((_ctx, _delta) => {}); process((_ctx, _delta) => {});