From a81542354b5f68731a92ae23b807d15b3d256d02 Mon Sep 17 00:00:00 2001 From: kolaflash Date: Tue, 10 Mar 2026 18:14:14 +0100 Subject: [PATCH] Remove unnecessary process boxing --- engine/Scene.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/engine/Scene.ts b/engine/Scene.ts index 8a01828..d6ffd70 100644 --- a/engine/Scene.ts +++ b/engine/Scene.ts @@ -38,6 +38,8 @@ export const sceneDataMap = new Map(); export const sceneProcessMap = new Map(); export const sceneComponentsMap = new Map(); +const sceneEntityProcessMap = new Map>(); + export const scenePreProcessMap = new Map(); export const scenePostProcessMap = new Map(); @@ -56,10 +58,10 @@ export const currentScene: Scene = { }; function processEntities(delta: number): void { - for (const [id, processBox] of sceneComponentsMap - .get(currentScene.data.name)! - .get("process")!.map) { - (processBox as Box).value(id, delta); + for (const [id, process] of sceneEntityProcessMap.get( + currentScene.data.name, + )!) { + process(id, delta); } } @@ -110,12 +112,12 @@ const [loadScene, sceneCache] = useWithAsyncCache(async (name: string) => { await import(`#/game/scenes/${name}/scene.ts`); const data = sceneDataMap.get(name)!; + const entityProcessMap = new Map(); + sceneEntityProcessMap.set(name, entityProcessMap); + const componentsMap = new Map>(); sceneComponentsMap.set(name, componentsMap); - const entityProcessMapProxy = new MapProxy(); - componentsMap.set("process", entityProcessMapProxy); - await Promise.all( data.entities.map( async (entityData: EntityData, index: number) => { @@ -124,7 +126,7 @@ const [loadScene, sceneCache] = useWithAsyncCache(async (name: string) => { const entityProcess = entityProcessMap.get(entityData.name); if (entityProcess !== undefined) { - entityProcessMapProxy.map.set(id, box(entityProcess)); // TODO: avoid boxing + entityProcessMap.set(id, entityProcess); } for (const [key, value] of entityBlueprintMap