From 916ecd562988cf87dbe32480e783ecc47c24909b Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 6 Jan 2025 18:10:54 +0800 Subject: [PATCH] internal: rename Viewer_getMainCamera and return null in Engine_getCameraComponent if camera entity is null --- thermion_dart/native/include/c_api/ThermionDartApi.h | 3 +-- thermion_dart/native/src/c_api/ThermionDartApi.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/thermion_dart/native/include/c_api/ThermionDartApi.h b/thermion_dart/native/include/c_api/ThermionDartApi.h index c699defc..60512c9a 100644 --- a/thermion_dart/native/include/c_api/ThermionDartApi.h +++ b/thermion_dart/native/include/c_api/ThermionDartApi.h @@ -49,7 +49,6 @@ extern "C" EMSCRIPTEN_KEEPALIVE TTransformManager *Engine_getTransformManager(TEngine *engine); EMSCRIPTEN_KEEPALIVE TRenderableManager *Engine_getRenderableManager(TEngine *engine); EMSCRIPTEN_KEEPALIVE TLightManager *Engine_getLightManager(TEngine *engine); - EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine *engine, EntityId entity); EMSCRIPTEN_KEEPALIVE TEntityManager *Engine_getEntityManager(TEngine *engine); EMSCRIPTEN_KEEPALIVE TMaterial *Engine_buildMaterial(TEngine *tEngine, const uint8_t* materialData, size_t length); @@ -60,6 +59,7 @@ extern "C" EMSCRIPTEN_KEEPALIVE void set_background_image_position(TViewer *viewer, float x, float y, bool clamp); EMSCRIPTEN_KEEPALIVE void set_background_color(TViewer *viewer, const float r, const float g, const float b, const float a); + EMSCRIPTEN_KEEPALIVE EntityId Viewer_getMainCamera(TViewer *viewer); EMSCRIPTEN_KEEPALIVE void Viewer_loadSkybox(TViewer *viewer, const char *skyboxPath); EMSCRIPTEN_KEEPALIVE void Viewer_removeSkybox(TViewer *viewer); EMSCRIPTEN_KEEPALIVE void Viewer_loadIbl(TViewer *viewer, const char *iblPath, float intensity); @@ -67,7 +67,6 @@ extern "C" EMSCRIPTEN_KEEPALIVE void create_ibl(TViewer *viewer, float r, float g, float b, float intensity); EMSCRIPTEN_KEEPALIVE void rotate_ibl(TViewer *viewer, float *rotationMatrix); - EMSCRIPTEN_KEEPALIVE EntityId get_main_camera(TViewer *viewer); EMSCRIPTEN_KEEPALIVE void set_frame_interval(TViewer *viewer, float interval); diff --git a/thermion_dart/native/src/c_api/ThermionDartApi.cpp b/thermion_dart/native/src/c_api/ThermionDartApi.cpp index 58ea8a50..a1fc5273 100644 --- a/thermion_dart/native/src/c_api/ThermionDartApi.cpp +++ b/thermion_dart/native/src/c_api/ThermionDartApi.cpp @@ -130,7 +130,7 @@ extern "C" viewer->setMainCamera(view); } - EMSCRIPTEN_KEEPALIVE EntityId get_main_camera(TViewer *viewer) + EMSCRIPTEN_KEEPALIVE EntityId Viewer_getMainCamera(TViewer *viewer) { return ((FilamentViewer *)viewer)->getMainCamera(); } @@ -456,7 +456,11 @@ extern "C" EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine *tEngine, EntityId entityId) { auto *engine = reinterpret_cast(tEngine); - auto *camera = engine->getCameraComponent(utils::Entity::import(entityId)); + auto entity = utils::Entity::import(entityId); + if(entity.isNull()) { + return std::nullptr_t(); + } + auto *camera = engine->getCameraComponent(entity); return reinterpret_cast(camera); }