From 746ef07e42216345e83a18d90c46780f1be861b4 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 17 Mar 2025 22:35:58 +0800 Subject: [PATCH] add FilamentAsset methods --- .../native/include/c_api/TFilamentAsset.h | 24 +++++++++++++ .../native/src/c_api/TFilamentAsset.cpp | 34 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 thermion_dart/native/include/c_api/TFilamentAsset.h create mode 100644 thermion_dart/native/src/c_api/TFilamentAsset.cpp diff --git a/thermion_dart/native/include/c_api/TFilamentAsset.h b/thermion_dart/native/include/c_api/TFilamentAsset.h new file mode 100644 index 00000000..87db47dc --- /dev/null +++ b/thermion_dart/native/include/c_api/TFilamentAsset.h @@ -0,0 +1,24 @@ +#pragma once + +#include + +#include "APIExport.h" +#include "APIBoundaryTypes.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + EMSCRIPTEN_KEEPALIVE uint32_t FilamentAsset_getEntityCount( + TFilamentAsset *filamentAsset + ); + EMSCRIPTEN_KEEPALIVE void FilamentAsset_getEntities( + TFilamentAsset *filamentAsset, + EntityId* out + ); + + +#ifdef __cplusplus +} +#endif + diff --git a/thermion_dart/native/src/c_api/TFilamentAsset.cpp b/thermion_dart/native/src/c_api/TFilamentAsset.cpp new file mode 100644 index 00000000..7f1a29fe --- /dev/null +++ b/thermion_dart/native/src/c_api/TFilamentAsset.cpp @@ -0,0 +1,34 @@ +#include + +#include "c_api/TSceneAsset.h" +#include "scene/SceneAsset.hpp" +#include "scene/GltfSceneAsset.hpp" +#include "scene/GeometrySceneAssetBuilder.hpp" + +using namespace thermion; + +#ifdef __cplusplus + +extern "C" +{ +#endif + +EMSCRIPTEN_KEEPALIVE uint32_t FilamentAsset_getEntityCount( + TFilamentAsset *tFilamentAsset +) { + auto *filamentAsset = reinterpret_cast(tFilamentAsset); + return filamentAsset->getEntityCount(); +} +EMSCRIPTEN_KEEPALIVE void FilamentAsset_getEntities( + TFilamentAsset *tFilamentAsset, + EntityId* out +) { + auto *filamentAsset = reinterpret_cast(tFilamentAsset); + for(int i=0; i < filamentAsset->getEntityCount(); i++) { + out[i] = utils::Entity::smuggle(filamentAsset->getEntities()[i]); + } +} +#ifdef __cplusplus +} +#endif +