#ifdef _WIN32 #include "ThermionWin32.h" #endif #ifdef __EMSCRIPTEN__ #include #endif #include #include #include #include "Log.hpp" #include "RenderTicker.hpp" using namespace thermion; extern "C" { #include "c_api/TRenderTicker.h" EMSCRIPTEN_KEEPALIVE TRenderTicker *RenderTicker_create(TEngine *tEngine, TRenderer *tRenderer) { auto engine = reinterpret_cast(tEngine); auto *renderer = reinterpret_cast(tRenderer); auto *renderTicker = new RenderTicker(engine, renderer); return reinterpret_cast(renderTicker); } EMSCRIPTEN_KEEPALIVE void RenderTicker_destroy(TRenderTicker *tRenderTicker) { auto *renderTicker = reinterpret_cast(tRenderTicker); delete renderTicker; } EMSCRIPTEN_KEEPALIVE void RenderTicker_addAnimationManager(TRenderTicker *tRenderTicker, TAnimationManager *tAnimationManager) { auto *renderTicker = reinterpret_cast(tRenderTicker); auto *animationManager = reinterpret_cast(tAnimationManager); renderTicker->addAnimationManager(animationManager); } EMSCRIPTEN_KEEPALIVE void RenderTicker_removeAnimationManager(TRenderTicker *tRenderTicker, TAnimationManager *tAnimationManager) { auto *renderTicker = reinterpret_cast(tRenderTicker); auto *animationManager = reinterpret_cast(tAnimationManager); renderTicker->removeAnimationManager(animationManager); } EMSCRIPTEN_KEEPALIVE void RenderTicker_render(TRenderTicker *tRenderTicker, uint64_t frameTimeInNanos) { auto *renderTicker = reinterpret_cast(tRenderTicker); renderTicker->render(frameTimeInNanos); } EMSCRIPTEN_KEEPALIVE void RenderTicker_setRenderable(TRenderTicker *tRenderTicker, TSwapChain *tSwapChain, TView **tViews, uint8_t numViews) { auto *renderTicker = reinterpret_cast(tRenderTicker); auto *swapChain = reinterpret_cast(tSwapChain); auto *views = reinterpret_cast(tViews); renderTicker->setRenderable(swapChain, views, numViews); } EMSCRIPTEN_KEEPALIVE void RenderTicker_setOverlayManager(TRenderTicker *tRenderTicker, TOverlayManager *tOverlayManager) { auto *renderTicker = reinterpret_cast(tRenderTicker); auto *overlayManager = reinterpret_cast(tOverlayManager); renderTicker->addOverlayManager(overlayManager); } EMSCRIPTEN_KEEPALIVE void RenderTicker_removeSwapChain(TRenderTicker *tRenderTicker, TSwapChain *tSwapChain) { auto *renderTicker = reinterpret_cast(tRenderTicker); auto *swapChain = reinterpret_cast(tSwapChain); renderTicker->removeSwapChain(swapChain); } }