diff --git a/thermion_dart/native/include/c_api/TTransformManager.h b/thermion_dart/native/include/c_api/TTransformManager.h index 198ea26b..8166b6e3 100644 --- a/thermion_dart/native/include/c_api/TTransformManager.h +++ b/thermion_dart/native/include/c_api/TTransformManager.h @@ -11,7 +11,7 @@ extern "C" EMSCRIPTEN_KEEPALIVE double4x4 TransformManager_getLocalTransform(TTransformManager *tTransformManager, EntityId entityId); EMSCRIPTEN_KEEPALIVE double4x4 TransformManager_getWorldTransform(TTransformManager *tTransformManager, EntityId entityId); EMSCRIPTEN_KEEPALIVE void TransformManager_setTransform(TTransformManager *tTransformManager, EntityId entityId, double4x4 transform); - EMSCRIPTEN_KEEPALIVE void TransformManager_transformToUnitCube(TTransformManager *tTransformManager, EntityId entityId, Aabb3 boundingBox); + EMSCRIPTEN_KEEPALIVE bool TransformManager_transformToUnitCube(TTransformManager *tTransformManager, EntityId entityId, Aabb3 boundingBox); EMSCRIPTEN_KEEPALIVE void TransformManager_setParent(TTransformManager *tTransformManager, EntityId child, EntityId parent, bool preserveScaling); EMSCRIPTEN_KEEPALIVE EntityId TransformManager_getParent(TTransformManager *tTransformManager, EntityId child); EMSCRIPTEN_KEEPALIVE EntityId TransformManager_getAncestor(TTransformManager *tTransformManager, EntityId childEntityId); diff --git a/thermion_dart/native/src/c_api/TTransformManager.cpp b/thermion_dart/native/src/c_api/TTransformManager.cpp index 10adce42..8335847e 100644 --- a/thermion_dart/native/src/c_api/TTransformManager.cpp +++ b/thermion_dart/native/src/c_api/TTransformManager.cpp @@ -62,14 +62,15 @@ extern "C" transformManager->setTransform(transformInstance, convert_double4x4_to_mat4(transform)); } - EMSCRIPTEN_KEEPALIVE void TransformManager_transformToUnitCube(TTransformManager *tTransformManager, EntityId entityId, Aabb3 boundingBox) { + EMSCRIPTEN_KEEPALIVE bool TransformManager_transformToUnitCube(TTransformManager *tTransformManager, EntityId entityId, Aabb3 boundingBox) { auto *transformManager = reinterpret_cast(tTransformManager); const auto &entity = utils::Entity::import(entityId); auto transformInstance = transformManager->getInstance(entity); if (!transformInstance || !transformInstance.isValid()) { - return; + Log("Failed to find valid transform for instance"); + return false; } auto center = filament::math::float3 { boundingBox.centerX, boundingBox.centerY, boundingBox.centerZ }; @@ -78,6 +79,7 @@ extern "C" auto scaleFactor = 2.0f / maxExtent; auto transform = math::mat4f::scaling(scaleFactor) * math::mat4f::translation(-center); transformManager->setTransform(transformInstance, transform); + return true; } EMSCRIPTEN_KEEPALIVE void TransformManager_setParent(TTransformManager *tTransformManager, EntityId childId, EntityId parentId, bool preserveScaling)