diff --git a/thermion_dart/native/include/c_api/TCamera.h b/thermion_dart/native/include/c_api/TCamera.h index c9740132..944952e4 100644 --- a/thermion_dart/native/include/c_api/TCamera.h +++ b/thermion_dart/native/include/c_api/TCamera.h @@ -16,35 +16,35 @@ enum TProjection { typedef enum TProjection TProjection; // Camera methods -void Camera_setExposure(TCamera *camera, float aperture, float shutterSpeed, float sensitivity); -double4x4 Camera_getModelMatrix(TCamera *const camera); -double4x4 Camera_getViewMatrix(TCamera *const camera); -double4x4 Camera_getProjectionMatrix(TCamera *const camera); -double4x4 Camera_getCullingProjectionMatrix(TCamera *const camera); -void Camera_getFrustum(TCamera *camera, double* out); -void Camera_setProjectionMatrix(TCamera *camera, double *matrix, double near, double far); -void Camera_setProjectionFromFov(TCamera *camera, double fovInDegrees, double aspect, double near, double far, bool horizontal); -double Camera_getFocalLength(TCamera *const camera); -double4x4 Camera_getViewMatrix(TCamera *const camera); -double4x4 Camera_getModelMatrix(TCamera* camera); -void Camera_lookAt(TCamera* camera, double3 eye, double3 focus, double3 up); +EMSCRIPTEN_KEEPALIVE void Camera_setExposure(TCamera *camera, float aperture, float shutterSpeed, float sensitivity); +EMSCRIPTEN_KEEPALIVE double4x4 Camera_getModelMatrix(TCamera *const camera); +EMSCRIPTEN_KEEPALIVE double4x4 Camera_getViewMatrix(TCamera *const camera); +EMSCRIPTEN_KEEPALIVE double4x4 Camera_getProjectionMatrix(TCamera *const camera); +EMSCRIPTEN_KEEPALIVE double4x4 Camera_getCullingProjectionMatrix(TCamera *const camera); +EMSCRIPTEN_KEEPALIVE void Camera_getFrustum(TCamera *camera, double* out); +EMSCRIPTEN_KEEPALIVE void Camera_setProjectionMatrix(TCamera *camera, double *matrix, double near, double far); +EMSCRIPTEN_KEEPALIVE void Camera_setProjectionFromFov(TCamera *camera, double fovInDegrees, double aspect, double near, double far, bool horizontal); +EMSCRIPTEN_KEEPALIVE double Camera_getFocalLength(TCamera *const camera); +EMSCRIPTEN_KEEPALIVE double4x4 Camera_getViewMatrix(TCamera *const camera); +EMSCRIPTEN_KEEPALIVE double4x4 Camera_getModelMatrix(TCamera* camera); +EMSCRIPTEN_KEEPALIVE void Camera_lookAt(TCamera* camera, double3 eye, double3 focus, double3 up); -double Camera_getNear(TCamera *camera); -double Camera_getCullingFar(TCamera *camera); -float Camera_getFov(TCamera *camera, bool horizontal); -double Camera_getFocusDistance(TCamera *camera); -void Camera_setFocusDistance(TCamera *camera, float focusDistance); +EMSCRIPTEN_KEEPALIVE double Camera_getNear(TCamera *camera); +EMSCRIPTEN_KEEPALIVE double Camera_getCullingFar(TCamera *camera); +EMSCRIPTEN_KEEPALIVE float Camera_getFov(TCamera *camera, bool horizontal); +EMSCRIPTEN_KEEPALIVE double Camera_getFocusDistance(TCamera *camera); +EMSCRIPTEN_KEEPALIVE void Camera_setFocusDistance(TCamera *camera, float focusDistance); -void Camera_setCustomProjectionWithCulling( +EMSCRIPTEN_KEEPALIVE void Camera_setCustomProjectionWithCulling( TCamera* camera, double4x4 projectionMatrix, double near, double far ); -void Camera_setModelMatrix(TCamera* camera, double *tModelMatrix); -void Camera_setLensProjection(TCamera *camera, double near, double far, double aspect, double focalLength); -EntityId Camera_getEntity(TCamera* camera); -void Camera_setProjection(TCamera *const tCamera, TProjection projection, double left, double right, +EMSCRIPTEN_KEEPALIVE void Camera_setModelMatrix(TCamera* camera, double *tModelMatrix); +EMSCRIPTEN_KEEPALIVE void Camera_setLensProjection(TCamera *camera, double near, double far, double aspect, double focalLength); +EMSCRIPTEN_KEEPALIVE EntityId Camera_getEntity(TCamera* camera); +EMSCRIPTEN_KEEPALIVE void Camera_setProjection(TCamera *const tCamera, TProjection projection, double left, double right, double bottom, double top, double near, double far); diff --git a/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h b/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h index c31e52dd..bd647124 100644 --- a/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h +++ b/thermion_dart/native/include/c_api/ThermionDartRenderThreadApi.h @@ -16,16 +16,16 @@ namespace thermion typedef int32_t EntityId; typedef void (*FilamentRenderCallback)(void *const owner); - void RenderThread_create(); - void RenderThread_destroy(); - void RenderThread_requestFrameAsync(); - void RenderThread_setRenderTicker(TRenderTicker *tRenderTicker); - void RenderThread_addTask(void (*task)()); + EMSCRIPTEN_KEEPALIVE void RenderThread_create(); + EMSCRIPTEN_KEEPALIVE void RenderThread_destroy(); + EMSCRIPTEN_KEEPALIVE void RenderThread_requestFrameAsync(); + EMSCRIPTEN_KEEPALIVE void RenderThread_setRenderTicker(TRenderTicker *tRenderTicker); + EMSCRIPTEN_KEEPALIVE void RenderThread_addTask(void (*task)()); - void RenderTicker_renderRenderThread(TRenderTicker *tRenderTicker, uint64_t frameTimeInNanos, uint32_t requestId, VoidCallback onComplete); - void AnimationManager_createRenderThread(TEngine *tEngine, TScene *tScene, void (*onComplete)(TAnimationManager *)); + EMSCRIPTEN_KEEPALIVE void RenderTicker_renderRenderThread(TRenderTicker *tRenderTicker, uint64_t frameTimeInNanos, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void AnimationManager_createRenderThread(TEngine *tEngine, TScene *tScene, void (*onComplete)(TAnimationManager *)); - void Engine_createRenderThread( + EMSCRIPTEN_KEEPALIVE void Engine_createRenderThread( TBackend backend, void* platform, void* sharedContext, @@ -33,22 +33,22 @@ namespace thermion bool disableHandleUseAfterFreeCheck, void (*onComplete)(TEngine *) ); - void Engine_createRendererRenderThread(TEngine *tEngine, void (*onComplete)(TRenderer *)); - void Engine_createSwapChainRenderThread(TEngine *tEngine, void *window, uint64_t flags, void (*onComplete)(TSwapChain *)); - void Engine_createHeadlessSwapChainRenderThread(TEngine *tEngine, uint32_t width, uint32_t height, uint64_t flags, void (*onComplete)(TSwapChain *)); - void Engine_createCameraRenderThread(TEngine* tEngine, void (*onComplete)(TCamera *)); - void Engine_createViewRenderThread(TEngine *tEngine, void (*onComplete)(TView *)); - void Engine_buildMaterialRenderThread(TEngine *tEngine, const uint8_t *materialData, size_t length, void (*onComplete)(TMaterial *)); - void Engine_destroyRenderThread(TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); - void Engine_destroySwapChainRenderThread(TEngine *tEngine, TSwapChain *tSwapChain, uint32_t requestId, VoidCallback onComplete); - void Engine_destroyViewRenderThread(TEngine *tEngine, TView *tView, uint32_t requestId, VoidCallback onComplete); - void Engine_destroySceneRenderThread(TEngine *tEngine, TScene *tScene, uint32_t requestId, VoidCallback onComplete); - void Engine_destroyColorGradingRenderThread(TEngine *tEngine, TColorGrading *tColorGrading, uint32_t requestId, VoidCallback onComplete); - void Engine_destroyMaterialRenderThread(TEngine *tEngine, TMaterial *tMaterial, uint32_t requestId, VoidCallback onComplete); - void Engine_destroyMaterialInstanceRenderThread(TEngine *tEngine, TMaterialInstance *tMaterialInstance, uint32_t requestId, VoidCallback onComplete); - void Engine_destroySkyboxRenderThread(TEngine *tEngine, TSkybox *tSkybox, uint32_t requestId, VoidCallback onComplete); - void Engine_destroyIndirectLightRenderThread(TEngine *tEngine, TIndirectLight *tIndirectLight, uint32_t requestId, VoidCallback onComplete); - void Texture_buildRenderThread(TEngine *engine, + EMSCRIPTEN_KEEPALIVE void Engine_createRendererRenderThread(TEngine *tEngine, void (*onComplete)(TRenderer *)); + EMSCRIPTEN_KEEPALIVE void Engine_createSwapChainRenderThread(TEngine *tEngine, void *window, uint64_t flags, void (*onComplete)(TSwapChain *)); + EMSCRIPTEN_KEEPALIVE void Engine_createHeadlessSwapChainRenderThread(TEngine *tEngine, uint32_t width, uint32_t height, uint64_t flags, void (*onComplete)(TSwapChain *)); + EMSCRIPTEN_KEEPALIVE void Engine_createCameraRenderThread(TEngine* tEngine, void (*onComplete)(TCamera *)); + EMSCRIPTEN_KEEPALIVE void Engine_createViewRenderThread(TEngine *tEngine, void (*onComplete)(TView *)); + EMSCRIPTEN_KEEPALIVE void Engine_buildMaterialRenderThread(TEngine *tEngine, const uint8_t *materialData, size_t length, void (*onComplete)(TMaterial *)); + EMSCRIPTEN_KEEPALIVE void Engine_destroyRenderThread(TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroySwapChainRenderThread(TEngine *tEngine, TSwapChain *tSwapChain, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroyViewRenderThread(TEngine *tEngine, TView *tView, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroySceneRenderThread(TEngine *tEngine, TScene *tScene, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroyColorGradingRenderThread(TEngine *tEngine, TColorGrading *tColorGrading, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroyMaterialRenderThread(TEngine *tEngine, TMaterial *tMaterial, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroyMaterialInstanceRenderThread(TEngine *tEngine, TMaterialInstance *tMaterialInstance, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroySkyboxRenderThread(TEngine *tEngine, TSkybox *tSkybox, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroyIndirectLightRenderThread(TEngine *tEngine, TIndirectLight *tIndirectLight, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Texture_buildRenderThread(TEngine *engine, uint32_t width, uint32_t height, uint32_t depth, @@ -59,25 +59,25 @@ namespace thermion TTextureFormat format, void (*onComplete)(TTexture*) ); - void Texture_generateMipMapsRenderThread(TTexture *tTexture, TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); - void Ktx1Reader_createTextureRenderThread(TEngine *tEngine, TKtx1Bundle *tBundle, uint32_t requestId, VoidCallback onTextureUploadComplete, void (*onComplete)(TTexture *)); + EMSCRIPTEN_KEEPALIVE void Texture_generateMipMapsRenderThread(TTexture *tTexture, TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Ktx1Reader_createTextureRenderThread(TEngine *tEngine, TKtx1Bundle *tBundle, uint32_t requestId, VoidCallback onTextureUploadComplete, void (*onComplete)(TTexture *)); - void Engine_destroyTextureRenderThread(TEngine *engine, TTexture* tTexture, uint32_t requestId, VoidCallback onComplete); - void Engine_createFenceRenderThread(TEngine *tEngine, void (*onComplete)(TFence*)); - void Fence_waitAndDestroyRenderThread(TFence *tFence, uint32_t requestId, VoidCallback onComplete); - void Engine_destroyFenceRenderThread(TEngine *tEngine, TFence *tFence, uint32_t requestId, VoidCallback onComplete); - void Engine_flushAndWaitRenderThread(TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); - void Engine_executeRenderThread(TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); - void Engine_buildSkyboxRenderThread(TEngine *tEngine, TTexture *tTexture, void (*onComplete)(TSkybox *)); - void Engine_buildIndirectLightFromIrradianceTextureRenderThread(TEngine *tEngine, TTexture *tReflectionsTexture, TTexture* tIrradianceTexture, float intensity, void (*onComplete)(TIndirectLight *)); - void Engine_buildIndirectLightFromIrradianceHarmonicsRenderThread(TEngine *tEngine, TTexture *tReflectionsTexture, float *harmonics, float intensity, void (*onComplete)(TIndirectLight *)); + EMSCRIPTEN_KEEPALIVE void Engine_destroyTextureRenderThread(TEngine *engine, TTexture* tTexture, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_createFenceRenderThread(TEngine *tEngine, void (*onComplete)(TFence*)); + EMSCRIPTEN_KEEPALIVE void Fence_waitAndDestroyRenderThread(TFence *tFence, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_destroyFenceRenderThread(TEngine *tEngine, TFence *tFence, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_flushAndWaitRenderThread(TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_executeRenderThread(TEngine *tEngine, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Engine_buildSkyboxRenderThread(TEngine *tEngine, TTexture *tTexture, void (*onComplete)(TSkybox *)); + EMSCRIPTEN_KEEPALIVE void Engine_buildIndirectLightFromIrradianceTextureRenderThread(TEngine *tEngine, TTexture *tReflectionsTexture, TTexture* tIrradianceTexture, float intensity, void (*onComplete)(TIndirectLight *)); + EMSCRIPTEN_KEEPALIVE void Engine_buildIndirectLightFromIrradianceHarmonicsRenderThread(TEngine *tEngine, TTexture *tReflectionsTexture, float *harmonics, float intensity, void (*onComplete)(TIndirectLight *)); - void Renderer_setClearOptionsRenderThread(TRenderer *tRenderer, double clearR, double clearG, double clearB, double clearA, uint8_t clearStencil, bool clear, bool discard, uint32_t requestId, VoidCallback onComplete); - void Renderer_beginFrameRenderThread(TRenderer *tRenderer, TSwapChain *tSwapChain, uint64_t frameTimeInNanos, void (*onComplete)(bool)); - void Renderer_endFrameRenderThread(TRenderer *tRenderer, uint32_t requestId, VoidCallback onComplete); - void Renderer_renderRenderThread(TRenderer *tRenderer, TView *tView, uint32_t requestId, VoidCallback onComplete); - void Renderer_renderStandaloneViewRenderThread(TRenderer *tRenderer, TView *tView, uint32_t requestId, VoidCallback onComplete); - void Renderer_readPixelsRenderThread( + EMSCRIPTEN_KEEPALIVE void Renderer_setClearOptionsRenderThread(TRenderer *tRenderer, double clearR, double clearG, double clearB, double clearA, uint8_t clearStencil, bool clear, bool discard, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Renderer_beginFrameRenderThread(TRenderer *tRenderer, TSwapChain *tSwapChain, uint64_t frameTimeInNanos, void (*onComplete)(bool)); + EMSCRIPTEN_KEEPALIVE void Renderer_endFrameRenderThread(TRenderer *tRenderer, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Renderer_renderRenderThread(TRenderer *tRenderer, TView *tView, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Renderer_renderStandaloneViewRenderThread(TRenderer *tRenderer, TView *tView, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Renderer_readPixelsRenderThread( TRenderer *tRenderer, uint32_t width, uint32_t height, uint32_t xOffset, uint32_t yOffset, TRenderTarget *tRenderTarget, @@ -87,29 +87,29 @@ namespace thermion size_t outLength, uint32_t requestId, VoidCallback onComplete); - void Material_createInstanceRenderThread(TMaterial *tMaterial, void (*onComplete)(TMaterialInstance *)); - void Material_createImageMaterialRenderThread(TEngine *tEngine, void (*onComplete)(TMaterial *)); - void Material_createGizmoMaterialRenderThread(TEngine *tEngine, void (*onComplete)(TMaterial *)); - void Material_createOutlineMaterialRenderThread(TEngine *tEngine, void (*onComplete)(TMaterial *)); + EMSCRIPTEN_KEEPALIVE void Material_createInstanceRenderThread(TMaterial *tMaterial, void (*onComplete)(TMaterialInstance *)); + EMSCRIPTEN_KEEPALIVE void Material_createImageMaterialRenderThread(TEngine *tEngine, void (*onComplete)(TMaterial *)); + EMSCRIPTEN_KEEPALIVE void Material_createGizmoMaterialRenderThread(TEngine *tEngine, void (*onComplete)(TMaterial *)); + EMSCRIPTEN_KEEPALIVE void Material_createOutlineMaterialRenderThread(TEngine *tEngine, void (*onComplete)(TMaterial *)); - void ColorGrading_createRenderThread(TEngine *tEngine, TToneMapping toneMapping, void (*callback)(TColorGrading *)); - void View_pickRenderThread(TView *tView, uint32_t requestId, uint32_t x, uint32_t y, PickCallback callback); - void View_setColorGradingRenderThread(TView *tView, TColorGrading *tColorGrading, uint32_t requestId, VoidCallback onComplete); - void View_setBloomRenderThread(TView *tView, bool enabled, double strength, uint32_t requestId, VoidCallback onComplete); - void View_setCameraRenderThread(TView *tView, TCamera *tCamera, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void ColorGrading_createRenderThread(TEngine *tEngine, TToneMapping toneMapping, void (*callback)(TColorGrading *)); + EMSCRIPTEN_KEEPALIVE void View_pickRenderThread(TView *tView, uint32_t requestId, uint32_t x, uint32_t y, PickCallback callback); + EMSCRIPTEN_KEEPALIVE void View_setColorGradingRenderThread(TView *tView, TColorGrading *tColorGrading, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void View_setBloomRenderThread(TView *tView, bool enabled, double strength, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void View_setCameraRenderThread(TView *tView, TCamera *tCamera, uint32_t requestId, VoidCallback onComplete); - void SceneAsset_createGridRenderThread(TEngine *tEngine, TMaterial * tMaterial, void (*callback)(TSceneAsset *)); + EMSCRIPTEN_KEEPALIVE void SceneAsset_createGridRenderThread(TEngine *tEngine, TMaterial * tMaterial, void (*callback)(TSceneAsset *)); - void SceneAsset_destroyRenderThread(TSceneAsset *tSceneAsset, uint32_t requestId, VoidCallback onComplete); - void SceneAsset_createFromFilamentAssetRenderThread( + EMSCRIPTEN_KEEPALIVE void SceneAsset_destroyRenderThread(TSceneAsset *tSceneAsset, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void SceneAsset_createFromFilamentAssetRenderThread( TEngine *tEngine, TGltfAssetLoader *tAssetLoader, TNameComponentManager *tNameComponentManager, TFilamentAsset *tFilamentAsset, void (*onComplete)(TSceneAsset *) ); - void SceneAsset_createInstanceRenderThread(TSceneAsset *asset, TMaterialInstance **tMaterialInstances, int materialInstanceCount, void (*callback)(TSceneAsset *)); - void SceneAsset_createGeometryRenderThread( + EMSCRIPTEN_KEEPALIVE void SceneAsset_createInstanceRenderThread(TSceneAsset *asset, TMaterialInstance **tMaterialInstances, int materialInstanceCount, void (*callback)(TSceneAsset *)); + EMSCRIPTEN_KEEPALIVE void SceneAsset_createGeometryRenderThread( TEngine *tEngine, float *vertices, uint32_t numVertices, @@ -124,7 +124,7 @@ namespace thermion int materialInstanceCount, void (*callback)(TSceneAsset *) ); - void MaterialProvider_createMaterialInstanceRenderThread( + EMSCRIPTEN_KEEPALIVE void MaterialProvider_createMaterialInstanceRenderThread( TMaterialProvider *tMaterialProvider, bool doubleSided, bool unlit, @@ -166,12 +166,12 @@ namespace thermion bool hasVolume, void (*callback)(TMaterialInstance *)); - void AnimationManager_updateBoneMatricesRenderThread( + EMSCRIPTEN_KEEPALIVE void AnimationManager_updateBoneMatricesRenderThread( TAnimationManager *tAnimationManager, TSceneAsset *sceneAsset, void (*callback)(bool)); - void AnimationManager_setMorphTargetWeightsRenderThread( + EMSCRIPTEN_KEEPALIVE void AnimationManager_setMorphTargetWeightsRenderThread( TAnimationManager *tAnimationManager, EntityId entityId, const float *const morphData, @@ -179,16 +179,16 @@ namespace thermion void (*callback)(bool)); // Image methods - void Image_createEmptyRenderThread(uint32_t width, uint32_t height, uint32_t channel, void (*onComplete)(TLinearImage *)); - void Image_decodeRenderThread(uint8_t* data, size_t length, const char* name, bool alpha, void (*onComplete)(TLinearImage *)); - void Image_getBytesRenderThread(TLinearImage *tLinearImage, void (*onComplete)(float *)); - void Image_destroyRenderThread(TLinearImage *tLinearImage, uint32_t requestId, VoidCallback onComplete); - void Image_getWidthRenderThread(TLinearImage *tLinearImage, void (*onComplete)(uint32_t)); - void Image_getHeightRenderThread(TLinearImage *tLinearImage, void (*onComplete)(uint32_t)); - void Image_getChannelsRenderThread(TLinearImage *tLinearImage, void (*onComplete)(uint32_t)); + EMSCRIPTEN_KEEPALIVE void Image_createEmptyRenderThread(uint32_t width, uint32_t height, uint32_t channel, void (*onComplete)(TLinearImage *)); + EMSCRIPTEN_KEEPALIVE void Image_decodeRenderThread(uint8_t* data, size_t length, const char* name, bool alpha, void (*onComplete)(TLinearImage *)); + EMSCRIPTEN_KEEPALIVE void Image_getBytesRenderThread(TLinearImage *tLinearImage, void (*onComplete)(float *)); + EMSCRIPTEN_KEEPALIVE void Image_destroyRenderThread(TLinearImage *tLinearImage, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Image_getWidthRenderThread(TLinearImage *tLinearImage, void (*onComplete)(uint32_t)); + EMSCRIPTEN_KEEPALIVE void Image_getHeightRenderThread(TLinearImage *tLinearImage, void (*onComplete)(uint32_t)); + EMSCRIPTEN_KEEPALIVE void Image_getChannelsRenderThread(TLinearImage *tLinearImage, void (*onComplete)(uint32_t)); - void Texture_loadImageRenderThread( + EMSCRIPTEN_KEEPALIVE void Texture_loadImageRenderThread( TEngine *tEngine, TTexture *tTexture, TLinearImage *tImage, @@ -197,7 +197,7 @@ namespace thermion int level, void (*onComplete)(bool) ); - void Texture_setImageRenderThread( + EMSCRIPTEN_KEEPALIVE void Texture_setImageRenderThread( TEngine *tEngine, TTexture *tTexture, uint32_t level, @@ -213,8 +213,8 @@ namespace thermion uint32_t pixelDataType, void (*onComplete)(bool) ); - void RenderTarget_getColorTextureRenderThread(TRenderTarget *tRenderTarget, void (*onComplete)(TTexture *)); - void RenderTarget_createRenderThread( + EMSCRIPTEN_KEEPALIVE void RenderTarget_getColorTextureRenderThread(TRenderTarget *tRenderTarget, void (*onComplete)(TTexture *)); + EMSCRIPTEN_KEEPALIVE void RenderTarget_createRenderThread( TEngine *tEngine, uint32_t width, uint32_t height, @@ -222,7 +222,7 @@ namespace thermion TTexture *depth, void (*onComplete)(TRenderTarget *) ); - void RenderTarget_destroyRenderThread( + EMSCRIPTEN_KEEPALIVE void RenderTarget_destroyRenderThread( TEngine *tEngine, TRenderTarget *tRenderTarget, uint32_t requestId, VoidCallback onComplete @@ -230,8 +230,8 @@ namespace thermion // TextureSampler methods - void TextureSampler_createRenderThread(void (*onComplete)(TTextureSampler*)); - void TextureSampler_createWithFilteringRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_createRenderThread(void (*onComplete)(TTextureSampler*)); + EMSCRIPTEN_KEEPALIVE void TextureSampler_createWithFilteringRenderThread( TSamplerMinFilter minFilter, TSamplerMagFilter magFilter, TSamplerWrapMode wrapS, @@ -239,53 +239,53 @@ namespace thermion TSamplerWrapMode wrapR, void (*onComplete)(TTextureSampler*) ); - void TextureSampler_createWithComparisonRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_createWithComparisonRenderThread( TSamplerCompareMode compareMode, TSamplerCompareFunc compareFunc, void (*onComplete)(TTextureSampler*) ); - void TextureSampler_setMinFilterRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_setMinFilterRenderThread( TTextureSampler* sampler, TSamplerMinFilter filter, uint32_t requestId, VoidCallback onComplete ); - void TextureSampler_setMagFilterRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_setMagFilterRenderThread( TTextureSampler* sampler, TSamplerMagFilter filter, uint32_t requestId, VoidCallback onComplete ); - void TextureSampler_setWrapModeSRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_setWrapModeSRenderThread( TTextureSampler* sampler, TSamplerWrapMode mode, uint32_t requestId, VoidCallback onComplete ); - void TextureSampler_setWrapModeTRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_setWrapModeTRenderThread( TTextureSampler* sampler, TSamplerWrapMode mode, uint32_t requestId, VoidCallback onComplete ); - void TextureSampler_setWrapModeRRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_setWrapModeRRenderThread( TTextureSampler* sampler, TSamplerWrapMode mode, uint32_t requestId, VoidCallback onComplete ); - void TextureSampler_setAnisotropyRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_setAnisotropyRenderThread( TTextureSampler* sampler, double anisotropy, uint32_t requestId, VoidCallback onComplete ); - void TextureSampler_setCompareModeRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_setCompareModeRenderThread( TTextureSampler* sampler, TSamplerCompareMode mode, TTextureSamplerCompareFunc func, uint32_t requestId, VoidCallback onComplete ); - void TextureSampler_destroyRenderThread( + EMSCRIPTEN_KEEPALIVE void TextureSampler_destroyRenderThread( TTextureSampler* sampler, uint32_t requestId, VoidCallback onComplete ); - void AnimationManager_setBoneTransformRenderThread( + EMSCRIPTEN_KEEPALIVE void AnimationManager_setBoneTransformRenderThread( TAnimationManager *tAnimationManager, EntityId asset, int skinIndex, @@ -293,18 +293,18 @@ namespace thermion const float *const transform, void (*callback)(bool)); - void AnimationManager_resetToRestPoseRenderThread(TAnimationManager *tAnimationManager, TSceneAsset *tSceneAsset, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE 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 *)); - void GltfResourceLoader_destroyRenderThread(TEngine *tEngine, TGltfResourceLoader *tResourceLoader, uint32_t requestId, VoidCallback onComplete); - void GltfResourceLoader_loadResourcesRenderThread(TGltfResourceLoader *tGltfResourceLoader, TFilamentAsset *tFilamentAsset, void (*callback)(bool)); - void GltfResourceLoader_addResourceDataRenderThread(TGltfResourceLoader *tGltfResourceLoader, const char *uri, uint8_t *data, size_t length, uint32_t requestId, VoidCallback onComplete); - void GltfResourceLoader_asyncBeginLoadRenderThread(TGltfResourceLoader *tGltfResourceLoader, TFilamentAsset *tFilamentAsset, void (*callback)(bool)); - void GltfResourceLoader_asyncUpdateLoadRenderThread(TGltfResourceLoader *tGltfResourceLoader); - void GltfResourceLoader_asyncGetLoadProgressRenderThread(TGltfResourceLoader *tGltfResourceLoader, void (*callback)(float)); + EMSCRIPTEN_KEEPALIVE void GltfAssetLoader_createRenderThread(TEngine *tEngine, TMaterialProvider *tMaterialProvider, TNameComponentManager *tNameComponentManager, void (*callback)(TGltfAssetLoader *)); + EMSCRIPTEN_KEEPALIVE void GltfResourceLoader_createRenderThread(TEngine *tEngine, void (*callback)(TGltfResourceLoader *)); + EMSCRIPTEN_KEEPALIVE void GltfResourceLoader_destroyRenderThread(TEngine *tEngine, TGltfResourceLoader *tResourceLoader, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void GltfResourceLoader_loadResourcesRenderThread(TGltfResourceLoader *tGltfResourceLoader, TFilamentAsset *tFilamentAsset, void (*callback)(bool)); + EMSCRIPTEN_KEEPALIVE void GltfResourceLoader_addResourceDataRenderThread(TGltfResourceLoader *tGltfResourceLoader, const char *uri, uint8_t *data, size_t length, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void GltfResourceLoader_asyncBeginLoadRenderThread(TGltfResourceLoader *tGltfResourceLoader, TFilamentAsset *tFilamentAsset, void (*callback)(bool)); + EMSCRIPTEN_KEEPALIVE void GltfResourceLoader_asyncUpdateLoadRenderThread(TGltfResourceLoader *tGltfResourceLoader); + EMSCRIPTEN_KEEPALIVE void GltfResourceLoader_asyncGetLoadProgressRenderThread(TGltfResourceLoader *tGltfResourceLoader, void (*callback)(float)); - void GltfAssetLoader_loadRenderThread( + EMSCRIPTEN_KEEPALIVE void GltfAssetLoader_loadRenderThread( TEngine *tEngine, TGltfAssetLoader *tAssetLoader, uint8_t *data, @@ -312,8 +312,8 @@ namespace thermion uint8_t numInstances, void (*callback)(TFilamentAsset *) ); - void Scene_addFilamentAssetRenderThread(TScene* tScene, TFilamentAsset *tAsset, uint32_t requestId, VoidCallback onComplete); - void Gizmo_createRenderThread( + EMSCRIPTEN_KEEPALIVE void Scene_addFilamentAssetRenderThread(TScene* tScene, TFilamentAsset *tAsset, uint32_t requestId, VoidCallback onComplete); + EMSCRIPTEN_KEEPALIVE void Gizmo_createRenderThread( TEngine *tEngine, TGltfAssetLoader *tAssetLoader, TGltfResourceLoader *tGltfResourceLoader, @@ -330,4 +330,3 @@ namespace thermion } } #endif -