From e8a3f5a189190c4897ad27806b5df4afa5f2886e Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 13 Apr 2026 16:18:01 +0200 Subject: [PATCH] Update cleanupSceneForDeletedAsset to handle NPC entities with deleted model assets --- src/assets/delete-project-asset.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/assets/delete-project-asset.ts b/src/assets/delete-project-asset.ts index fdb90420..1b1a9e6e 100644 --- a/src/assets/delete-project-asset.ts +++ b/src/assets/delete-project-asset.ts @@ -59,6 +59,8 @@ function cleanupSceneForDeletedAsset( if (asset.kind === "model") { const remainingModelInstances: ProjectScene["modelInstances"] = {}; + const updatedEntities: ProjectScene["entities"] = {}; + let didChangeEntities = false; for (const [modelInstanceId, modelInstance] of Object.entries( scene.modelInstances @@ -74,6 +76,23 @@ function cleanupSceneForDeletedAsset( if (removedModelInstanceIds.size > 0) { nextModelInstances = remainingModelInstances; } + + for (const [entityId, entity] of Object.entries(scene.entities)) { + if (entity.kind === "npc" && entity.modelAssetId === asset.id) { + updatedEntities[entityId] = { + ...entity, + modelAssetId: null + }; + didChangeEntities = true; + continue; + } + + updatedEntities[entityId] = entity; + } + + if (didChangeEntities) { + nextEntities = updatedEntities; + } } if (asset.kind === "audio") {