diff --git a/thermion_dart/native/include/APIExport.h b/thermion_dart/native/include/APIExport.h new file mode 100644 index 00000000..e276af1f --- /dev/null +++ b/thermion_dart/native/include/APIExport.h @@ -0,0 +1,47 @@ +#ifndef _API_EXPORT_H +#define _API_EXPORT_H +#ifdef _WIN32 +#ifdef IS_DLL +#define EMSCRIPTEN_KEEPALIVE __declspec(dllimport) +#else +#define EMSCRIPTEN_KEEPALIVE __declspec(dllexport) +#endif +#else +#ifndef EMSCRIPTEN_KEEPALIVE +#define EMSCRIPTEN_KEEPALIVE __attribute__((visibility("default"))) +#endif +#endif + +// we copy the LLVM here rather than including, +// because on Windows it's difficult to pin the exact location which confuses dart ffigen + +#ifndef __STDBOOL_H +#define __STDBOOL_H + +#define __bool_true_false_are_defined 1 + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L +/* FIXME: We should be issuing a deprecation warning here, but cannot yet due + * to system headers which include this header file unconditionally. + */ +#elif !defined(__cplusplus) +#define bool _Bool +#define true 1 +#define false 0 +#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) +/* Define _Bool as a GNU extension. */ +#define _Bool bool +#if defined(__cplusplus) && __cplusplus < 201103L +/* For C++98, define bool, false, true as a GNU extension. */ +#define bool bool +#define false false +#define true true +#endif +#endif + +#endif /* __STDBOOL_H */ + +#if defined(__APPLE__) || defined(__EMSCRIPTEN__) +#include +#endif +#endif \ No newline at end of file diff --git a/thermion_dart/native/include/TSceneManager.h b/thermion_dart/native/include/TSceneManager.h new file mode 100644 index 00000000..295df4db --- /dev/null +++ b/thermion_dart/native/include/TSceneManager.h @@ -0,0 +1,54 @@ +#pragma once + +#include "APIBoundaryTypes.h" +#include "ResourceBuffer.hpp" +#include "ThermionDartAPIUtils.h" +#include "TCamera.h" +#include "TMaterialInstance.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + + EMSCRIPTEN_KEEPALIVE TGizmo* SceneManager_createGizmo(TSceneManager *tSceneManager, TView *tView, TScene *tScene); + EMSCRIPTEN_KEEPALIVE EntityId SceneManager_createGeometry( + TSceneManager *sceneManager, + float *vertices, + int numVertices, + float *normals, + int numNormals, + float *uvs, + int numUvs, + uint16_t *indices, + int numIndices, + int primitiveType, + TMaterialInstance *materialInstance, + bool keepData); + EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitMaterialInstance(TSceneManager *sceneManager); + EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitFixedSizeMaterialInstance(TSceneManager *sceneManager); + EMSCRIPTEN_KEEPALIVE bool SceneManager_setTransform(TSceneManager *sceneManager, EntityId entityId, const double *const transform); + EMSCRIPTEN_KEEPALIVE void SceneManager_queueTransformUpdates(TSceneManager *sceneManager, EntityId* entities, const double* const transforms, int numEntities); + EMSCRIPTEN_KEEPALIVE TCamera* SceneManager_findCameraByName(TSceneManager* tSceneManager, EntityId entity, const char* name); + EMSCRIPTEN_KEEPALIVE void SceneManager_setVisibilityLayer(TSceneManager *tSceneManager, EntityId entity, int layer); + EMSCRIPTEN_KEEPALIVE TScene* SceneManager_getScene(TSceneManager *tSceneManager); + EMSCRIPTEN_KEEPALIVE EntityId SceneManager_loadGlbFromBuffer(TSceneManager *sceneManager, const uint8_t *const, size_t length, bool keepData, int priority, int layer, bool loadResourcesAsync); + EMSCRIPTEN_KEEPALIVE bool SceneManager_setMorphAnimation( + TSceneManager *sceneManager, + EntityId entity, + const float *const morphData, + const uint32_t *const morphIndices, + int numMorphTargets, + int numFrames, + float frameLengthInMs); + + // SceneManager + EMSCRIPTEN_KEEPALIVE TCamera* SceneManager_createCamera(TSceneManager *sceneManager); + EMSCRIPTEN_KEEPALIVE void SceneManager_destroyCamera(TSceneManager *sceneManager, TCamera* camera); + EMSCRIPTEN_KEEPALIVE size_t SceneManager_getCameraCount(TSceneManager *sceneManager); + EMSCRIPTEN_KEEPALIVE TCamera* SceneManager_getCameraAt(TSceneManager *sceneManager, size_t index); + +#ifdef __cplusplus +} +#endif + diff --git a/thermion_dart/native/include/ThermionDartApi.h b/thermion_dart/native/include/ThermionDartApi.h index e7303168..777c02ae 100644 --- a/thermion_dart/native/include/ThermionDartApi.h +++ b/thermion_dart/native/include/ThermionDartApi.h @@ -1,51 +1,7 @@ #ifndef _FLUTTER_FILAMENT_API_H #define _FLUTTER_FILAMENT_API_H -#ifdef _WIN32 -#ifdef IS_DLL -#define EMSCRIPTEN_KEEPALIVE __declspec(dllimport) -#else -#define EMSCRIPTEN_KEEPALIVE __declspec(dllexport) -#endif -#else -#ifndef EMSCRIPTEN_KEEPALIVE -#define EMSCRIPTEN_KEEPALIVE __attribute__((visibility("default"))) -#endif -#endif - -// we copy the LLVM here rather than including, -// because on Windows it's difficult to pin the exact location which confuses dart ffigen - -#ifndef __STDBOOL_H -#define __STDBOOL_H - -#define __bool_true_false_are_defined 1 - -#if defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L -/* FIXME: We should be issuing a deprecation warning here, but cannot yet due - * to system headers which include this header file unconditionally. - */ -#elif !defined(__cplusplus) -#define bool _Bool -#define true 1 -#define false 0 -#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) -/* Define _Bool as a GNU extension. */ -#define _Bool bool -#if defined(__cplusplus) && __cplusplus < 201103L -/* For C++98, define bool, false, true as a GNU extension. */ -#define bool bool -#define false false -#define true true -#endif -#endif - -#endif /* __STDBOOL_H */ - -#if defined(__APPLE__) || defined(__EMSCRIPTEN__) -#include -#endif - +#include "APIExport.h" #include "APIBoundaryTypes.h" #include "ResourceBuffer.hpp" #include "ThermionDartAPIUtils.h" @@ -197,37 +153,6 @@ extern "C" int skinIndex, int boneIndex); - EMSCRIPTEN_KEEPALIVE TGizmo* SceneManager_createGizmo(TSceneManager *tSceneManager, TView *tView, TScene *tScene); - EMSCRIPTEN_KEEPALIVE EntityId SceneManager_createGeometry( - TSceneManager *sceneManager, - float *vertices, - int numVertices, - float *normals, - int numNormals, - float *uvs, - int numUvs, - uint16_t *indices, - int numIndices, - int primitiveType, - TMaterialInstance *materialInstance, - bool keepData); - EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitMaterialInstance(TSceneManager *sceneManager); - EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitFixedSizeMaterialInstance(TSceneManager *sceneManager); - EMSCRIPTEN_KEEPALIVE bool SceneManager_setTransform(TSceneManager *sceneManager, EntityId entityId, const double *const transform); - EMSCRIPTEN_KEEPALIVE void SceneManager_queueTransformUpdates(TSceneManager *sceneManager, EntityId* entities, const double* const transforms, int numEntities); - EMSCRIPTEN_KEEPALIVE TCamera* SceneManager_findCameraByName(TSceneManager* tSceneManager, EntityId entity, const char* name); - EMSCRIPTEN_KEEPALIVE void SceneManager_setVisibilityLayer(TSceneManager *tSceneManager, EntityId entity, int layer); - EMSCRIPTEN_KEEPALIVE TScene* SceneManager_getScene(TSceneManager *tSceneManager); - EMSCRIPTEN_KEEPALIVE EntityId SceneManager_loadGlbFromBuffer(TSceneManager *sceneManager, const uint8_t *const, size_t length, bool keepData, int priority, int layer, bool loadResourcesAsync); - EMSCRIPTEN_KEEPALIVE bool SceneManager_setMorphAnimation( - TSceneManager *sceneManager, - EntityId entity, - const float *const morphData, - const uint32_t *const morphIndices, - int numMorphTargets, - int numFrames, - float frameLengthInMs); - EMSCRIPTEN_KEEPALIVE bool update_bone_matrices(TSceneManager *sceneManager, EntityId entityId); EMSCRIPTEN_KEEPALIVE void get_morph_target_name(TSceneManager *sceneManager, EntityId assetEntity, EntityId childEntity, char *const outPtr, int index); @@ -247,12 +172,6 @@ extern "C" EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine *engine, EntityId entity); EMSCRIPTEN_KEEPALIVE TEntityManager *Engine_getEntityManager(TEngine *engine); - // SceneManager - EMSCRIPTEN_KEEPALIVE TCamera* SceneManager_createCamera(TSceneManager *sceneManager); - EMSCRIPTEN_KEEPALIVE void SceneManager_destroyCamera(TSceneManager *sceneManager, TCamera* camera); - EMSCRIPTEN_KEEPALIVE size_t SceneManager_getCameraCount(TSceneManager *sceneManager); - EMSCRIPTEN_KEEPALIVE TCamera* SceneManager_getCameraAt(TSceneManager *sceneManager, size_t index); - EMSCRIPTEN_KEEPALIVE int hide_mesh(TSceneManager *sceneManager, EntityId entity, const char *meshName); EMSCRIPTEN_KEEPALIVE int reveal_mesh(TSceneManager *sceneManager, EntityId entity, const char *meshName); @@ -276,7 +195,6 @@ extern "C" EMSCRIPTEN_KEEPALIVE void test_collisions(TSceneManager *sceneManager, EntityId entity); EMSCRIPTEN_KEEPALIVE void set_priority(TSceneManager *sceneManager, EntityId entityId, int priority); - EMSCRIPTEN_KEEPALIVE Aabb3 SceneManager_getRenderableBoundingBox(TSceneManager *sceneManager, EntityId entity); EMSCRIPTEN_KEEPALIVE Aabb2 get_bounding_box(TSceneManager *sceneManager, TView *view, EntityId entity); EMSCRIPTEN_KEEPALIVE void get_bounding_box_to_out(TSceneManager *sceneManager, TView *view, EntityId entity, float *minX, float *minY, float *maxX, float *maxY); diff --git a/thermion_dart/native/src/TSceneManager.cpp b/thermion_dart/native/src/TSceneManager.cpp new file mode 100644 index 00000000..6fc7085e --- /dev/null +++ b/thermion_dart/native/src/TSceneManager.cpp @@ -0,0 +1,133 @@ +#include "filament/LightManager.h" +#include "ResourceBuffer.hpp" +#include "FilamentViewer.hpp" +#include "Log.hpp" +#include "APIExport.h" + +using namespace thermion; + +extern "C" +{ + +#include "TSceneManager.h" + + EMSCRIPTEN_KEEPALIVE TGizmo *SceneManager_createGizmo(TSceneManager *tSceneManager, TView *tView, TScene *tScene) + { + auto sceneManager = reinterpret_cast(tSceneManager); + auto *scene = reinterpret_cast(tScene); + auto *view = reinterpret_cast(tView); + auto gizmo = sceneManager->createGizmo(view, scene); + return reinterpret_cast(gizmo); + } + + EMSCRIPTEN_KEEPALIVE EntityId SceneManager_loadGlbFromBuffer(TSceneManager *sceneManager, const uint8_t *const data, size_t length, bool keepData, int priority, int layer, bool loadResourcesAsync) + { + return ((SceneManager *)sceneManager)->loadGlbFromBuffer((const uint8_t *)data, length, 1, keepData, priority, layer, loadResourcesAsync); + } + + EMSCRIPTEN_KEEPALIVE bool SceneManager_setMorphAnimation( + TSceneManager *sceneManager, + EntityId asset, + const float *const morphData, + const uint32_t *const morphIndices, + int numMorphTargets, + int numFrames, + float frameLengthInMs) + { + auto result = ((SceneManager *)sceneManager)->setMorphAnimationBuffer(asset, morphData, morphIndices, numMorphTargets, numFrames, frameLengthInMs); + return result; + } + + EMSCRIPTEN_KEEPALIVE TCamera *SceneManager_getCameraByName(TSceneManager *tSceneManager, EntityId entityId, const char *name) + { + auto *sceneManager = reinterpret_cast(tSceneManager); + return nullptr; + } + + EMSCRIPTEN_KEEPALIVE bool SceneManager_setTransform(TSceneManager *sceneManager, EntityId entityId, const double *const transform) + { + auto matrix = math::mat4( + transform[0], transform[1], transform[2], + transform[3], + transform[4], + transform[5], + transform[6], + transform[7], + transform[8], + transform[9], + transform[10], + transform[11], + transform[12], + transform[13], + transform[14], + transform[15]); + return ((SceneManager *)sceneManager)->setTransform(entityId, matrix); + } + + EMSCRIPTEN_KEEPALIVE Aabb3 SceneManager_getRenderableBoundingBox(TSceneManager *tSceneManager, EntityId entity) + { + auto sceneManager = reinterpret_cast(tSceneManager); + return sceneManager->getRenderableBoundingBox(entity); + } + + EMSCRIPTEN_KEEPALIVE void SceneManager_setVisibilityLayer(TSceneManager *tSceneManager, EntityId entity, int layer) + { + auto *sceneManager = reinterpret_cast(tSceneManager); + sceneManager->setVisibilityLayer(entity, layer); + } + + EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitMaterialInstance(TSceneManager *sceneManager) + { + auto *instance = ((SceneManager *)sceneManager)->createUnlitMaterialInstance(); + return reinterpret_cast(instance); + } + + EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitFixedSizeMaterialInstance(TSceneManager *sceneManager) + { + auto *instance = ((SceneManager *)sceneManager)->createUnlitFixedSizeMaterialInstance(); + return reinterpret_cast(instance); + } + + EMSCRIPTEN_KEEPALIVE TCamera *SceneManager_createCamera(TSceneManager *tSceneManager) + { + auto *sceneManager = reinterpret_cast(tSceneManager); + return reinterpret_cast(sceneManager->createCamera()); + } + + EMSCRIPTEN_KEEPALIVE void SceneManager_destroyCamera(TSceneManager *tSceneManager, TCamera *tCamera) + { + auto *sceneManager = reinterpret_cast(tSceneManager); + auto *camera = reinterpret_cast(tCamera); + sceneManager->destroyCamera(camera); + } + + EMSCRIPTEN_KEEPALIVE size_t SceneManager_getCameraCount(TSceneManager *tSceneManager) + { + auto *sceneManager = reinterpret_cast(tSceneManager); + return sceneManager->getCameraCount(); + } + + EMSCRIPTEN_KEEPALIVE TCamera *SceneManager_getCameraAt(TSceneManager *tSceneManager, size_t index) + { + auto *sceneManager = reinterpret_cast(tSceneManager); + auto *camera = sceneManager->getCameraAt(index); + return reinterpret_cast(camera); + } + + EMSCRIPTEN_KEEPALIVE EntityId SceneManager_createGeometry( + TSceneManager *sceneManager, + float *vertices, + int numVertices, + float *normals, + int numNormals, + float *uvs, + int numUvs, + uint16_t *indices, + int numIndices, + int primitiveType, + TMaterialInstance *materialInstance, + bool keepData) + { + return ((SceneManager *)sceneManager)->createGeometry(vertices, static_cast(numVertices), normals, static_cast(numNormals), uvs, static_cast(numUvs), indices, static_cast(numIndices), (filament::RenderableManager::PrimitiveType)primitiveType, reinterpret_cast(materialInstance), keepData); + } +} \ No newline at end of file diff --git a/thermion_dart/native/src/ThermionDartApi.cpp b/thermion_dart/native/src/ThermionDartApi.cpp index 4d9abc3e..a05220ba 100644 --- a/thermion_dart/native/src/ThermionDartApi.cpp +++ b/thermion_dart/native/src/ThermionDartApi.cpp @@ -173,19 +173,6 @@ extern "C" return ((SceneManager *)sceneManager)->loadGlb(assetPath, numInstances, keepData); } - EMSCRIPTEN_KEEPALIVE TGizmo* SceneManager_createGizmo(TSceneManager *tSceneManager, TView *tView, TScene *tScene) { - auto sceneManager = reinterpret_cast(tSceneManager); - auto *scene = reinterpret_cast(tScene); - auto *view = reinterpret_cast(tView); - auto gizmo = sceneManager->createGizmo(view, scene); - return reinterpret_cast(gizmo); - } - - EMSCRIPTEN_KEEPALIVE EntityId SceneManager_loadGlbFromBuffer(TSceneManager *sceneManager, const uint8_t *const data, size_t length, bool keepData, int priority, int layer, bool loadResourcesAsync) - { - return ((SceneManager *)sceneManager)->loadGlbFromBuffer((const uint8_t *)data, length, 1, keepData, priority, layer, loadResourcesAsync); - } - EMSCRIPTEN_KEEPALIVE EntityId create_instance(TSceneManager *sceneManager, EntityId entityId) { return ((SceneManager *)sceneManager)->createInstance(entityId); @@ -464,19 +451,7 @@ extern "C" return ((SceneManager *)sceneManager)->setMorphTargetWeights(asset, weights, numWeights); } - EMSCRIPTEN_KEEPALIVE bool SceneManager_setMorphAnimation( - TSceneManager *sceneManager, - EntityId asset, - const float *const morphData, - const uint32_t *const morphIndices, - int numMorphTargets, - int numFrames, - float frameLengthInMs) - { - auto result = ((SceneManager *)sceneManager)->setMorphAnimationBuffer(asset, morphData, morphIndices, numMorphTargets, numFrames, frameLengthInMs); - return result; - } - + EMSCRIPTEN_KEEPALIVE void clear_morph_animation(TSceneManager *sceneManager, EntityId asset) { ((SceneManager *)sceneManager)->clearMorphAnimationBuffer(asset); @@ -685,59 +660,6 @@ extern "C" } } - EMSCRIPTEN_KEEPALIVE TCamera* SceneManager_getCameraByName(TSceneManager *tSceneManager, EntityId entityId, const char* name) { - auto *sceneManager = reinterpret_cast(tSceneManager); - return nullptr; - } - - - EMSCRIPTEN_KEEPALIVE bool SceneManager_setTransform(TSceneManager *sceneManager, EntityId entityId, const double *const transform) - { - auto matrix = math::mat4( - transform[0], transform[1], transform[2], - transform[3], - transform[4], - transform[5], - transform[6], - transform[7], - transform[8], - transform[9], - transform[10], - transform[11], - transform[12], - transform[13], - transform[14], - transform[15]); - return ((SceneManager *)sceneManager)->setTransform(entityId, matrix); - } - - EMSCRIPTEN_KEEPALIVE void SceneManager_queueTransformUpdates(TSceneManager *tSceneManager, EntityId *entities, const double *const transforms, int numEntities) - { - auto *sceneManager = reinterpret_cast(tSceneManager); - - std::vector matrices( - numEntities); - for (int i = 0; i < numEntities; i++) - { - matrices[i] = math::mat4( - transforms[i * 16], transforms[i * 16 + 1], transforms[i * 16 + 2], - transforms[i * 16 + 3], - transforms[i * 16 + 4], - transforms[i * 16 + 5], - transforms[i * 16 + 6], - transforms[i * 16 + 7], - transforms[i * 16 + 8], - transforms[i * 16 + 9], - transforms[i * 16 + 10], - transforms[i * 16 + 11], - transforms[i * 16 + 12], - transforms[i * 16 + 13], - transforms[i * 16 + 14], - transforms[i * 16 + 15]); - } - sceneManager->queueTransformUpdates(entities, matrices.data(), numEntities); - } - EMSCRIPTEN_KEEPALIVE bool update_bone_matrices(TSceneManager *sceneManager, EntityId entityId) { return ((SceneManager *)sceneManager)->updateBoneMatrices(entityId); @@ -862,23 +784,7 @@ extern "C" ((SceneManager *)sceneManager)->removeAnimationComponent(entityId); } - EMSCRIPTEN_KEEPALIVE EntityId SceneManager_createGeometry( - TSceneManager *sceneManager, - float *vertices, - int numVertices, - float *normals, - int numNormals, - float *uvs, - int numUvs, - uint16_t *indices, - int numIndices, - int primitiveType, - TMaterialInstance *materialInstance, - bool keepData) - { - return ((SceneManager *)sceneManager)->createGeometry(vertices, static_cast(numVertices), normals, static_cast(numNormals), uvs, static_cast(numUvs), indices, static_cast(numIndices), (filament::RenderableManager::PrimitiveType)primitiveType, reinterpret_cast(materialInstance), keepData); - } - + EMSCRIPTEN_KEEPALIVE EntityId find_child_entity_by_name(TSceneManager *sceneManager, const EntityId parent, const char *name) { auto entity = ((SceneManager *)sceneManager)->findChildEntityByName(parent, name); @@ -909,12 +815,6 @@ extern "C" { ((SceneManager *)sceneManager)->setPriority(entity, priority); } - - EMSCRIPTEN_KEEPALIVE Aabb3 SceneManager_getRenderableBoundingBox(TSceneManager *tSceneManager, EntityId entity) { - auto sceneManager = reinterpret_cast(tSceneManager); - return sceneManager->getRenderableBoundingBox(entity); - } - EMSCRIPTEN_KEEPALIVE Aabb2 get_bounding_box(TSceneManager *sceneManager, TView *tView, EntityId entity) { @@ -932,12 +832,6 @@ extern "C" *maxY = box.maxY; } - EMSCRIPTEN_KEEPALIVE void SceneManager_setVisibilityLayer(TSceneManager *tSceneManager, EntityId entity, int layer) - { - auto *sceneManager = reinterpret_cast(tSceneManager); - sceneManager->setVisibilityLayer(entity, layer); - } - EMSCRIPTEN_KEEPALIVE void thermion_flutter_free(void *ptr) { free(ptr); @@ -1033,18 +927,6 @@ extern "C" return reinterpret_cast(materialInstance); } - EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitMaterialInstance(TSceneManager *sceneManager) - { - auto *instance = ((SceneManager *)sceneManager)->createUnlitMaterialInstance(); - return reinterpret_cast(instance); - } - - EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitFixedSizeMaterialInstance(TSceneManager *sceneManager) - { - auto *instance = ((SceneManager *)sceneManager)->createUnlitFixedSizeMaterialInstance(); - return reinterpret_cast(instance); - } - EMSCRIPTEN_KEEPALIVE void destroy_material_instance(TSceneManager *sceneManager, TMaterialInstance *instance) { ((SceneManager *)sceneManager)->destroy(reinterpret_cast(instance)); @@ -1072,31 +954,6 @@ extern "C" transformManager.setTransform(transformInstance, convert_double4x4_to_mat4(transform)); } - EMSCRIPTEN_KEEPALIVE TCamera *SceneManager_createCamera(TSceneManager *tSceneManager) - { - auto *sceneManager = reinterpret_cast(tSceneManager); - return reinterpret_cast(sceneManager->createCamera()); - } - - EMSCRIPTEN_KEEPALIVE void SceneManager_destroyCamera(TSceneManager *tSceneManager, TCamera *tCamera) - { - auto *sceneManager = reinterpret_cast(tSceneManager); - auto *camera = reinterpret_cast(tCamera); - sceneManager->destroyCamera(camera); - } - - EMSCRIPTEN_KEEPALIVE size_t SceneManager_getCameraCount(TSceneManager *tSceneManager) - { - auto *sceneManager = reinterpret_cast(tSceneManager); - return sceneManager->getCameraCount(); - } - - EMSCRIPTEN_KEEPALIVE TCamera *SceneManager_getCameraAt(TSceneManager *tSceneManager, size_t index) - { - auto *sceneManager = reinterpret_cast(tSceneManager); - auto *camera = sceneManager->getCameraAt(index); - return reinterpret_cast(camera); - } } diff --git a/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp b/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp index fd910680..02b3e634 100644 --- a/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp +++ b/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp @@ -1,14 +1,16 @@ +#include +#include +#include +#include + #include "ThermionDartRenderThreadApi.h" #include "FilamentViewer.hpp" #include "TView.h" #include "Log.hpp" #include "ThreadPool.hpp" -#include "filament/LightManager.h" +#include "TSceneManager.h" -#include -#include -#include -#include +#include "filament/LightManager.h" using namespace thermion; using namespace std::chrono_literals;