diff --git a/thermion_dart/native/include/c_api/TRenderableManager.h b/thermion_dart/native/include/c_api/TRenderableManager.h index e9f2b042..031778f6 100644 --- a/thermion_dart/native/include/c_api/TRenderableManager.h +++ b/thermion_dart/native/include/c_api/TRenderableManager.h @@ -11,6 +11,7 @@ extern "C" EMSCRIPTEN_KEEPALIVE void RenderableManager_setMaterialInstanceAt(TRenderableManager *tRenderableManager, EntityId entityId, int primitiveIndex, TMaterialInstance *tMaterialInstance); EMSCRIPTEN_KEEPALIVE void RenderableManager_setPriority(TRenderableManager *tRenderableManager, EntityId entityId, int priority); EMSCRIPTEN_KEEPALIVE TMaterialInstance *RenderableManager_getMaterialInstanceAt(TRenderableManager *tRenderableManager, EntityId entityId, int primitiveIndex); + EMSCRIPTEN_KEEPALIVE bool RenderableManager_isRenderable(TRenderableManager *tRenderableManager, EntityId entityId); #ifdef __cplusplus } #endif diff --git a/thermion_dart/native/src/c_api/TRenderableManager.cpp b/thermion_dart/native/src/c_api/TRenderableManager.cpp index ba3fb9cb..c69ccc0c 100644 --- a/thermion_dart/native/src/c_api/TRenderableManager.cpp +++ b/thermion_dart/native/src/c_api/TRenderableManager.cpp @@ -40,5 +40,12 @@ namespace thermion auto renderableInstance = renderableManager->getInstance(entity); renderableManager->setPriority(renderableInstance, priority); } + + EMSCRIPTEN_KEEPALIVE bool RenderableManager_isRenderable(TRenderableManager *tRenderableManager, EntityId entityId) { + auto *renderableManager = reinterpret_cast(tRenderableManager); + const auto &entity = utils::Entity::import(entityId); + auto renderableInstance = renderableManager->getInstance(entity); + return renderableInstance.isValid(); + } } } \ No newline at end of file