#ifdef __EMSCRIPTEN__ #include #endif #include "c_api/TScene.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "Log.hpp" #ifdef __cplusplus namespace thermion { extern "C" { using namespace filament; #endif EMSCRIPTEN_KEEPALIVE void Scene_addEntity(TScene *tScene, EntityId entityId) { auto *scene = reinterpret_cast(tScene); scene->addEntity(utils::Entity::import(entityId)); TRACE("Added entity %d", entityId); } EMSCRIPTEN_KEEPALIVE void Scene_removeEntity(TScene* tScene, EntityId entityId) { auto *scene = reinterpret_cast(tScene); scene->remove(utils::Entity::import(entityId)); TRACE("Removed entity %d", entityId); } EMSCRIPTEN_KEEPALIVE void Scene_setSkybox(TScene* tScene, TSkybox *tSkybox) { auto *scene = reinterpret_cast(tScene); auto *skybox = reinterpret_cast(tSkybox); scene->setSkybox(skybox); TRACE("Set skybox"); } EMSCRIPTEN_KEEPALIVE void Scene_setIndirectLight(TScene* tScene, TIndirectLight *tIndirectLight) { auto *scene = reinterpret_cast(tScene); auto *light = reinterpret_cast(tIndirectLight); scene->setIndirectLight(light); } EMSCRIPTEN_KEEPALIVE void Scene_addFilamentAsset(TScene* tScene, TFilamentAsset *tAsset) { auto *scene = reinterpret_cast(tScene); auto *asset = reinterpret_cast(tAsset); scene->addEntities(asset->getEntities(), asset->getEntityCount()); } #ifdef __cplusplus } } #endif