From 20ea43a8096627ed55d9fc318fb508c9dfaf30bf Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 17 Mar 2025 16:38:30 +0800 Subject: [PATCH] add TScene --- thermion_dart/native/include/c_api/TScene.h | 26 ++++++++++++++ thermion_dart/native/src/c_api/TScene.cpp | 38 +++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 thermion_dart/native/include/c_api/TScene.h create mode 100644 thermion_dart/native/src/c_api/TScene.cpp diff --git a/thermion_dart/native/include/c_api/TScene.h b/thermion_dart/native/include/c_api/TScene.h new file mode 100644 index 00000000..2c747c7a --- /dev/null +++ b/thermion_dart/native/include/c_api/TScene.h @@ -0,0 +1,26 @@ +#ifndef _T_SCENE_H +#define _T_SCENE_H + +#include "APIExport.h" +#include "APIBoundaryTypes.h" +#include "TMaterialInstance.h" +#include "TTexture.h" +#include "ResourceBuffer.hpp" +#include "MathUtils.hpp" + +#ifdef __cplusplus +extern "C" +{ +#endif + + + +EMSCRIPTEN_KEEPALIVE void Scene_addEntity(TScene* tScene, EntityId entityId); +EMSCRIPTEN_KEEPALIVE void Scene_setSkybox(TScene* tScene, TSkybox *skybox); + + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/thermion_dart/native/src/c_api/TScene.cpp b/thermion_dart/native/src/c_api/TScene.cpp new file mode 100644 index 00000000..e6fe59dc --- /dev/null +++ b/thermion_dart/native/src/c_api/TScene.cpp @@ -0,0 +1,38 @@ +#include "c_api/TScene.h" + +#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)); + } + + EMSCRIPTEN_KEEPALIVE void Scene_setSkybox(TScene* tScene, TSkybox *tSkybox) { + auto *scene = reinterpret_cast(tScene); + auto *skybox = reinterpret_cast(tSkybox); + scene->setSkybox(skybox); + } + +#ifdef __cplusplus + } +} +#endif