From 5fe985d2c7801156a1268902f00998019ddbbfe6 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 30 Nov 2024 14:03:31 +0800 Subject: [PATCH] add create/set camera render thread functions --- .../src/c_api/ThermionDartRenderThreadApi.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp b/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp index c99cf0ff..d26b0b6a 100644 --- a/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp +++ b/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp @@ -514,6 +514,16 @@ extern "C" auto fut = _rl->add_task(lambda); } + EMSCRIPTEN_KEEPALIVE void View_setCameraRenderThread(TView *tView, TCamera *tCamera, void (*callback)()) { + std::packaged_task lambda( + [=] + { + View_setCamera(tView, tCamera); + callback(); + }); + auto fut = _rl->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void *SceneManager_destroyAllRenderThread(TSceneManager *tSceneManager, void (*callback)()) { std::packaged_task lambda( @@ -538,6 +548,17 @@ extern "C" return nullptr; } + EMSCRIPTEN_KEEPALIVE void *SceneManager_createCameraRenderThread(TSceneManager *tSceneManager, void (*callback)(TCamera*)) { + std::packaged_task lambda( + [=]() mutable + { + auto *camera = SceneManager_createCamera(tSceneManager); + callback(reinterpret_cast(camera)); + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void unproject_texture_render_thread(TViewer *viewer, EntityId entity, uint8_t *input, uint32_t inputWidth, uint32_t inputHeight, uint8_t *out, uint32_t outWidth, uint32_t outHeight, void (*callback)()) { std::packaged_task lambda(