diff --git a/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h b/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h index 1983f9f4..5d53f104 100644 --- a/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h +++ b/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h @@ -55,6 +55,13 @@ namespace thermion EMSCRIPTEN_KEEPALIVE void load_skybox_render_thread(TViewer *viewer, const char *skyboxPath, void (*onComplete)()); EMSCRIPTEN_KEEPALIVE void remove_skybox_render_thread(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE TGizmo *SceneManager_createGizmoRenderThread( + TSceneManager *tSceneManager, + TView *tView, + TScene *tScene, + void (*onComplete)(TGizmo*) + ); + EMSCRIPTEN_KEEPALIVE void SceneManager_createGeometryRenderThread( TSceneManager *sceneManager, float *vertices, diff --git a/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp b/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp index 4b4fe74d..3b8e3cd8 100644 --- a/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp +++ b/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp @@ -536,6 +536,22 @@ extern "C" return nullptr; } + EMSCRIPTEN_KEEPALIVE TGizmo *SceneManager_createGizmoRenderThread( + TSceneManager *tSceneManager, + TView *tView, + TScene *tScene, + void (*onComplete)(TGizmo*) + ) { + std::packaged_task lambda( + [=]() mutable + { + auto *gizmo = SceneManager_createGizmo(tSceneManager, tView, tScene); + onComplete(gizmo); + }); + auto fut = _rl->add_task(lambda); + return nullptr; + } + EMSCRIPTEN_KEEPALIVE void *SceneManager_destroyAssetRenderThread(TSceneManager *tSceneManager, TSceneAsset *tSceneAsset, void (*callback)()) { std::packaged_task lambda(