when destroying a SceneAsset, if the object is an instance, call destroyInstance on the owner of instance rather than deleting the object directly

This commit is contained in:
Nick Fisher
2025-06-04 10:48:07 +08:00
parent 886a4a37aa
commit d0da7f49f3

View File

@@ -112,7 +112,11 @@ extern "C"
EMSCRIPTEN_KEEPALIVE void SceneAsset_destroy(TSceneAsset *tSceneAsset) { EMSCRIPTEN_KEEPALIVE void SceneAsset_destroy(TSceneAsset *tSceneAsset) {
auto *asset = reinterpret_cast<SceneAsset*>(tSceneAsset); auto *asset = reinterpret_cast<SceneAsset*>(tSceneAsset);
delete asset; if(asset->isInstance()) {
asset->getInstanceOwner()->destroyInstance(asset);
} else {
delete asset;
}
} }
EMSCRIPTEN_KEEPALIVE void SceneAsset_addToScene(TSceneAsset *tSceneAsset, TScene *tScene) { EMSCRIPTEN_KEEPALIVE void SceneAsset_addToScene(TSceneAsset *tSceneAsset, TScene *tScene) {