From d0da7f49f307c287552de5d5ee9f66afa9a17810 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Wed, 4 Jun 2025 10:48:07 +0800 Subject: [PATCH] when destroying a SceneAsset, if the object is an instance, call destroyInstance on the owner of instance rather than deleting the object directly --- thermion_dart/native/src/c_api/TSceneAsset.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/thermion_dart/native/src/c_api/TSceneAsset.cpp b/thermion_dart/native/src/c_api/TSceneAsset.cpp index f4992dbf..c35b25e2 100644 --- a/thermion_dart/native/src/c_api/TSceneAsset.cpp +++ b/thermion_dart/native/src/c_api/TSceneAsset.cpp @@ -112,7 +112,11 @@ extern "C" EMSCRIPTEN_KEEPALIVE void SceneAsset_destroy(TSceneAsset *tSceneAsset) { auto *asset = reinterpret_cast(tSceneAsset); - delete asset; + if(asset->isInstance()) { + asset->getInstanceOwner()->destroyInstance(asset); + } else { + delete asset; + } } EMSCRIPTEN_KEEPALIVE void SceneAsset_addToScene(TSceneAsset *tSceneAsset, TScene *tScene) {