From 7b80723560bf9e013074aaca00a8af015abc0f73 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 2 Jun 2025 11:51:19 +0800 Subject: [PATCH] add Texture_generateMipMapsRenderThread, AnimationManager_resetToRestPoseRenderThread --- .../c_api/ThermionDartRenderThreadApi.h | 3 ++- .../src/c_api/ThermionDartRenderThreadApi.cpp | 21 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h b/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h index 6a43b73f..872f27d6 100644 --- a/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h +++ b/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h @@ -58,6 +58,7 @@ namespace thermion TTextureFormat format, void (*onComplete)(TTexture*) ); + void Texture_generateMipMapsRenderThread(TTexture *tTexture, TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); void Engine_destroyTextureRenderThread(TEngine *engine, TTexture* tTexture, uint32_t requestId, VoidCallback onComplete); void Engine_createFenceRenderThread(TEngine *tEngine, void (*onComplete)(TFence*)); @@ -299,7 +300,7 @@ namespace thermion const float *const transform, void (*callback)(bool)); - void AnimationManager_resetToRestPoseRenderThread(TAnimationManager *tAnimationManager, EntityId entityId, uint32_t requestId, VoidCallback onComplete); + void AnimationManager_resetToRestPoseRenderThread(TAnimationManager *tAnimationManager, TSceneAsset *tSceneAsset, uint32_t requestId, VoidCallback onComplete); void GltfAssetLoader_createRenderThread(TEngine *tEngine, TMaterialProvider *tMaterialProvider, TNameComponentManager *tNameComponentManager, void (*callback)(TGltfAssetLoader *)); void GltfResourceLoader_createRenderThread(TEngine *tEngine, void (*callback)(TGltfResourceLoader *)); diff --git a/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp b/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp index 997bec21..919a4c15 100644 --- a/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp +++ b/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp @@ -703,6 +703,16 @@ extern "C" auto fut = _renderThread->add_task(lambda); } + EMSCRIPTEN_KEEPALIVE void AnimationManager_resetToRestPoseRenderThread(TAnimationManager *tAnimationManager, TSceneAsset *tSceneAsset, uint32_t requestId, VoidCallback onComplete) { + std::packaged_task lambda( + [=]() mutable + { + AnimationManager_resetToRestPose(tAnimationManager, tSceneAsset); + PROXY(onComplete(requestId)); + }); + auto fut = _renderThread->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void AnimationManager_createRenderThread(TEngine *tEngine, TScene *tScene, void (*onComplete)(TAnimationManager *)) { std::packaged_task lambda( @@ -841,7 +851,16 @@ extern "C" auto fut = _renderThread->add_task(lambda); } - // Texture methods + void Texture_generateMipMapsRenderThread(TTexture *tTexture, TEngine *tEngine, uint32_t requestId, VoidCallback onComplete) { + std::packaged_task lambda( + [=]() mutable + { + Texture_generateMipMaps(tTexture, tEngine); + PROXY(onComplete(requestId)); + }); + auto fut = _renderThread->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void Texture_loadImageRenderThread(TEngine *tEngine, TTexture *tTexture, TLinearImage *tImage, TPixelDataFormat bufferFormat, TPixelDataType pixelDataType, int level,