From 024643e3a1fd3881435a77e70aa970f41de3e985 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 23 Dec 2024 12:37:34 +0800 Subject: [PATCH] internal: add check for renderable entity when returning bounding box --- .../lib/src/viewer/src/ffi/src/ffi_asset.dart | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/ffi_asset.dart b/thermion_dart/lib/src/viewer/src/ffi/src/ffi_asset.dart index 8c3ae94e..08727833 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/ffi_asset.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/ffi_asset.dart @@ -190,8 +190,14 @@ class FFIAsset extends ThermionAsset { ThermionAsset? _boundingBoxAsset; - Aabb3 getBoundingBox() { - final aabb3 = SceneManager_getRenderableBoundingBox(sceneManager, entity); + Future getBoundingBox() async { + late ThermionEntity targetEntity; + if (RenderableManager_isRenderable(renderableManager, entity)) { + targetEntity = entity; + } else { + targetEntity = (await getChildEntities()).first; + } + final aabb3 = SceneManager_getRenderableBoundingBox(sceneManager, targetEntity); return aabb3; } @@ -276,10 +282,13 @@ class FFIAsset extends ThermionAsset { materialInstances: [material], keepData: false, ); + + TransformManager_setParent(Engine_getTransformManager(engine), + _boundingBoxAsset!.entity, entity, false); } if (visible) { await _boundingBoxAsset!.addToScene(); - } else { + } else { await _boundingBoxAsset!.removeFromScene(); } }