diff --git a/thermion_dart/native/include/c_api/TSceneManager_HBAK b/thermion_dart/native/include/c_api/TSceneManager_HBAK deleted file mode 100644 index 51f7d83f..00000000 --- a/thermion_dart/native/include/c_api/TSceneManager_HBAK +++ /dev/null @@ -1,88 +0,0 @@ -// #pragma once - -// #include "APIBoundaryTypes.h" -// #include "MathUtils.hpp" -// #include "TCamera.h" -// #include "TMaterialInstance.h" - -// #ifdef __cplusplus -// extern "C" -// { -// #endif - -// EMSCRIPTEN_KEEPALIVE TGizmo *SceneManager_createGizmo(TSceneManager *tSceneManager, TView *tView, TScene *tScene, TGizmoType tGizmoType); -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_createGeometry( -// TSceneManager *sceneManager, -// float *vertices, -// int numVertices, -// float *normals, -// int numNormals, -// float *uvs, -// int numUvs, -// uint16_t *indices, -// int numIndices, -// int primitiveType, -// TMaterialInstance **materialInstances, -// int materialInstanceCount, -// bool keepData); -// EMSCRIPTEN_KEEPALIVE TMaterialProvider *SceneManager_getUbershaderMaterialProvider(TSceneManager *sceneManager); -// EMSCRIPTEN_KEEPALIVE TMaterialProvider *SceneManager_getUnlitMaterialProvider(TSceneManager *sceneManager); -// EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitMaterialInstance(TSceneManager *sceneManager); -// EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitFixedSizeMaterialInstance(TSceneManager *sceneManager); - -// 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 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 void SceneManager_destroyMaterialInstance(TSceneManager *sceneManager, TMaterialInstance *instance); - -// EMSCRIPTEN_KEEPALIVE Aabb3 SceneManager_getRenderableBoundingBox(TSceneManager *tSceneManager, EntityId entity); -// EMSCRIPTEN_KEEPALIVE int SceneManager_addToScene(TSceneManager *tSceneManager, EntityId entity); -// EMSCRIPTEN_KEEPALIVE int SceneManager_removeFromScene(TSceneManager *tSceneManager, EntityId entity); - -// EMSCRIPTEN_KEEPALIVE void SceneManager_transformToUnitCube(TSceneManager *sceneManager, EntityId asset); -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_loadGlbFromBuffer(TSceneManager *tSceneManager, const uint8_t *const, size_t length, int numInstances, bool keepData, int priority, int layer, bool loadResourcesAsync); -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_loadGlb(TSceneManager *sceneManager, const char *assetPath, int numInstances, bool keepData); -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_loadGltf(TSceneManager *sceneManager, const char *assetPath, const char *relativePath, bool keepData); - - -// EMSCRIPTEN_KEEPALIVE EntityId SceneManager_addLight( -// TSceneManager *tSceneManager, -// uint8_t type, -// float colour, -// float intensity, -// float posX, -// float posY, -// float posZ, -// float dirX, -// float dirY, -// float dirZ, -// float falloffRadius, -// float spotLightConeInner, -// float spotLightConeOuter, -// float sunAngularRadius, -// float sunHaloSize, -// float sunHaloFallof, -// bool shadows); -// EMSCRIPTEN_KEEPALIVE void SceneManager_removeLight(TSceneManager *tSceneManager, EntityId entityId); - -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyLights(TSceneManager *tSceneManager); -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyAsset(TSceneManager *tSceneManager, TSceneAsset *sceneAsset); -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyAssets(TSceneManager *tSceneManager); -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyAll(TSceneManager *tSceneManager); - -// EMSCRIPTEN_KEEPALIVE TAnimationManager *SceneManager_getAnimationManager(TSceneManager *tSceneManager); -// EMSCRIPTEN_KEEPALIVE TNameComponentManager *SceneManager_getNameComponentManager(TSceneManager *tSceneManager); -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_createGrid(TSceneManager *tSceneManager, TMaterial *tMaterial); -// EMSCRIPTEN_KEEPALIVE bool SceneManager_isGridEntity(TSceneManager *tSceneManager, EntityId entityId); - - -// #ifdef __cplusplus -// } -// #endif diff --git a/thermion_dart/native/include/scene/SceneManager.hpp b/thermion_dart/native/include/scene/SceneManager.hpp deleted file mode 100644 index dc83591e..00000000 --- a/thermion_dart/native/include/scene/SceneManager.hpp +++ /dev/null @@ -1,362 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include "tsl/robin_map.h" - -#include "AnimationManager.hpp" -#include "CustomGeometry.hpp" -#include "Gizmo.hpp" -#include "GridOverlay.hpp" -#include "ResourceBuffer.hpp" -#include "SceneAsset.hpp" - -#include "components/CollisionComponentManager.hpp" - -namespace thermion -{ - - typedef int32_t EntityId; - - using namespace filament; - using namespace filament::gltfio; - using namespace utils; - using std::string; - using std::unique_ptr; - using std::vector; - - class SceneManager - { - public: - SceneManager( - const ResourceLoaderWrapperImpl *const loader, - Engine *engine, - Scene *scene, - const char *uberArchivePath, - Camera *mainCamera); - ~SceneManager(); - - enum LAYERS - { - DEFAULT_ASSETS = 0, - BACKGROUND = 6, - OVERLAY = 7, - }; - - enum GizmoType { - TRANSLATION, - ROTATION - }; - - //// - /// @brief Load the glTF file from the specified path and adds all entities to the scene. - /// @param uri the path to the asset. Should be either asset:// (representing a Flutter asset), or file:// (representing a filesystem file). - /// @param relativeResourcePath the (relative) path to the asset's resources. - /// @return the glTF entity. - /// - SceneAsset* loadGltf(const char *uri, const char *relativeResourcePath, int numInstances = 1, bool keepData = false); - - //// - /// @brief Load the GLB from the specified path, optionally creating multiple instances. - /// @param uri the path to the asset. Should be either asset:// (representing a Flutter asset), or file:// (representing a filesystem file). - /// @param numInstances the number of instances to create. Must be at least 1. - /// @return an Entity representing the FilamentAsset associated with the loaded FilamentAsset. - /// - SceneAsset* loadGlb(const char *uri, int numInstances, bool keepData); - - /// @brief - /// @param data - /// @param length - /// @param numInstances - /// @param keepData - /// @param priority - /// @param layer - /// @param loadResourcesAsync - /// @return - SceneAsset* loadGlbFromBuffer(const uint8_t *data, size_t length, int numInstances = 1, bool keepData = false, int priority = 4, int layer = 0, bool loadResourcesAsync = false, bool addToScene = true); - - /// @brief Destroys all assets and instances. - /// - utils::Entity addLight( - filament::LightManager::Type t, - float colour, - float intensity, - float posX, - float posY, - float posZ, - float dirX, - float dirY, - float dirZ, - float falloffRadius, - float spotLightConeInner, - float spotLightConeOuter, - float sunAngularRadius, - float sunHaloSize, - float sunHaloFallof, - bool shadows); - - /// @brief Removes/destroys the light. - /// - void removeLight(utils::Entity entity); - - /// - /// Creates an instance of the given entity. - /// This may return an instance from a pool of inactive instances; see [remove] for more information. - /// If [materialInstances] is provided, these wil - /// - SceneAsset* createInstance(SceneAsset* asset, MaterialInstance **materialInstances = nullptr, size_t materialInstanceCount = 0); - - /// @brief Removes the asset (and all its child entities) from the scene and "destroys" all resources. - /// If the asset is not an instance, the asset will be deleted. - /// If the asset is an instance, [remove] is not guaranted to delete the asset. It may be returned to a pool of inactive instances. - /// From the user's perspective, this can be considered as destroyed. - /// @param entity - void destroy(SceneAsset* entity); - - /// @brief Destroys all lights. - /// - void destroyLights(); - - /// @brief Destroys all assets and instances. - /// - void destroyAssets(); - - /// @brief Destroys all assets/instances, scenes, materials, etc. - /// - void destroyAll(); - - /// @brief - /// @param entityId - void transformToUnitCube(EntityId entityId); - - /// @brief - /// @param entities - /// @param transforms - /// @param numEntities - void queueTransformUpdates(EntityId *entities, math::mat4 *transforms, int numEntities); - - /// @brief - /// @param entity - /// @param viewportCoordX - /// @param viewportCoordY - /// @param x - /// @param y - /// @param z - void queueRelativePositionUpdateWorldAxis(EntityId entity, float viewportCoordX, float viewportCoordY, float x, float y, float z); - - /// @brief - /// @param view - /// @param entityId - /// @param viewportCoordX - /// @param viewportCoordY - void queueRelativePositionUpdateFromViewportVector(View *view, EntityId entityId, float viewportCoordX, float viewportCoordY); - - const utils::Entity *getCameraEntities(EntityId e); - size_t getCameraEntityCount(EntityId e); - const utils::Entity *getLightEntities(EntityId e) noexcept; - size_t getLightEntityCount(EntityId e) noexcept; - - /// @brief - void update(); - - /// @brief - /// @param entity - /// @return - bool removeFromScene(EntityId entity); - - /// @brief - /// @param entity - /// @return - bool addToScene(EntityId entity); - - /// @brief - /// @param entity - /// @param onCollisionCallback - /// @param affectsCollidingTransform - void addCollisionComponent(EntityId entity, void (*onCollisionCallback)(const EntityId entityId1, const EntityId entityId2), bool affectsCollidingTransform); - - /// @brief - /// @param entityId - /// - /// - void removeCollisionComponent(EntityId entityId); - - /// @brief - /// @param entity - void testCollisions(EntityId entity); - - /// @brief returns the number of instances of the FilamentAsset represented by the given entity. - /// @param entityId - /// @return the number of instances - int getInstanceCount(EntityId entityId); - - /// @brief returns an array containing all instances of the FilamentAsset represented by the given entity. - /// @param entityId - void getInstances(EntityId entityId, EntityId *out); - - /// - /// Sets the draw priority for the given entity. See RenderableManager.h for more details. - /// - void setPriority(EntityId entity, int priority); - - /// @brief returns the 2D min/max viewport coordinates of the bounding box for the specified enitty; - /// @param out a pointer large enough to store four floats (the min/max coordinates of the bounding box) - /// @return - /// - Aabb2 getScreenSpaceBoundingBox(View *view, EntityId entity); - - /// @brief returns the 3D bounding box of the renderable instance for the given entity. - /// @return the bounding box - /// - Aabb3 getRenderableBoundingBox(EntityId entity); - - /// - /// Creates an entity with the specified geometry/material/normals and adds to the scene. - /// If [keepData] is true, stores - /// - SceneAsset *createGeometry( - float *vertices, - uint32_t numVertices, - float *normals, - uint32_t numNormals, - float *uvs, - uint32_t numUvs, - uint16_t *indices, - uint32_t numIndices, - filament::RenderableManager::PrimitiveType primitiveType = RenderableManager::PrimitiveType::TRIANGLES, - MaterialInstance **materialInstances = nullptr, - size_t materialInstanceCount = 0, - bool keepData = false); - - - gltfio::MaterialProvider *const getUnlitMaterialProvider() - { - return _unlitMaterialProvider; - } - - gltfio::MaterialProvider *const getUbershaderMaterialProvider() - { - return _ubershaderProvider; - } - - /// @brief - /// @param materialInstance - void destroy(MaterialInstance *materialInstance); - - /// @brief - /// @return - MaterialInstance *createUnlitFixedSizeMaterialInstance(); - - /// @brief - /// @return - MaterialInstance *createUnlitMaterialInstance(); - - /// @brief - /// @param entityId - /// @param layer - void setVisibilityLayer(EntityId entityId, int layer); - - /// @brief - /// @return - Camera *createCamera(); - - /// @brief - /// @param camera - void destroyCamera(Camera *camera); - - /// @brief - /// @return - size_t getCameraCount(); - - /// @brief - /// @param index - /// @return - Camera *getCameraAt(size_t index); - - /// @brief - /// @param view - /// @param scene - /// @return - Gizmo *createGizmo(View *view, Scene *scene, GizmoType type); - - - /// @brief - /// @return - Scene *getScene() - { - return _scene; - } - - /// @brief - /// @return - AnimationManager *getAnimationManager() { - return _animationManager.get(); - } - - /// @brief - /// @return - NameComponentManager *getNameComponentManager() { - return _ncm; - } - - SceneAsset *createGrid(Material *material); - - bool isGridEntity(utils::Entity entity); - - private: - gltfio::AssetLoader *_assetLoader = nullptr; - const ResourceLoaderWrapperImpl *const _resourceLoaderWrapper; - Engine *_engine = nullptr; - Scene *_scene = nullptr; - Camera *_mainCamera; - - gltfio::MaterialKey _defaultUnlitConfig; - - gltfio::MaterialProvider *_ubershaderProvider = nullptr; - gltfio::MaterialProvider *_unlitMaterialProvider = nullptr; - gltfio::ResourceLoader *_gltfResourceLoader = nullptr; - gltfio::TextureProvider *_stbDecoder = nullptr; - gltfio::TextureProvider *_ktxDecoder = nullptr; - std::mutex _mutex; - std::vector _materialInstances; - - Material *_unlitFixedSizeMaterial = nullptr; - Material *_gizmoMaterial = nullptr; - - SceneAsset *_translationGizmoGlb; - SceneAsset *_rotationGizmoGlb; - - utils::NameComponentManager *_ncm; - - tsl::robin_map _transformUpdates; - std::vector _cameras; - std::vector _lights; - std::vector> _sceneAssets; - std::vector> _gizmos; - - std::unique_ptr _animationManager = std::nullptr_t(); - std::unique_ptr _collisionComponentManager = std::nullptr_t(); - - std::unique_ptr _grid = std::nullptr_t(); - - void _updateTransforms(); - }; -} diff --git a/thermion_dart/native/src/c_api/TSceneManager.cpp b/thermion_dart/native/src/c_api/TSceneManager.cpp deleted file mode 100644 index 20bef56b..00000000 --- a/thermion_dart/native/src/c_api/TSceneManager.cpp +++ /dev/null @@ -1,265 +0,0 @@ -// #include - -// #include "c_api/APIExport.h" -// #include "ResourceBuffer.hpp" -// #include "FilamentViewer.hpp" -// #include "Log.hpp" - -// using namespace thermion; - -// extern "C" -// { - -// #include "c_api/TSceneManager.h" - -// EMSCRIPTEN_KEEPALIVE TScene *SceneManager_getScene(TSceneManager *tSceneManager) -// { -// auto sceneManager = reinterpret_cast(tSceneManager); -// return reinterpret_cast(sceneManager->getScene()); -// } - -// EMSCRIPTEN_KEEPALIVE TMaterialProvider *SceneManager_getUnlitMaterialProvider(TSceneManager *tSceneManager) -// { -// auto sceneManager = reinterpret_cast(tSceneManager); -// auto provider = sceneManager->getUnlitMaterialProvider(); -// return reinterpret_cast(provider); -// } - -// EMSCRIPTEN_KEEPALIVE TMaterialProvider *SceneManager_getUbershaderMaterialProvider(TSceneManager *tSceneManager) -// { -// auto sceneManager = reinterpret_cast(tSceneManager); -// auto provider = sceneManager->getUbershaderMaterialProvider(); -// return reinterpret_cast(provider); -// } - -// EMSCRIPTEN_KEEPALIVE TGizmo *SceneManager_createGizmo(TSceneManager *tSceneManager, TView *tView, TScene *tScene, TGizmoType tGizmoType) -// { -// auto sceneManager = reinterpret_cast(tSceneManager); -// auto *scene = reinterpret_cast(tScene); -// auto *view = reinterpret_cast(tView); -// auto gizmo = sceneManager->createGizmo(view, scene, static_cast(tGizmoType)); -// return reinterpret_cast(gizmo); -// } - -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_loadGlb(TSceneManager *tSceneManager, const char *assetPath, int numInstances, bool keepData) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// auto *asset = sceneManager->loadGlb(assetPath, numInstances, keepData); -// return reinterpret_cast(asset); -// } - -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_loadGltf(TSceneManager *tSceneManager, -// const char *assetPath, -// const char *relativeResourcePath, -// bool keepData) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// auto *asset = sceneManager->loadGltf(assetPath, relativeResourcePath, 1, keepData); -// return reinterpret_cast(asset); -// } - -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_loadGlbFromBuffer(TSceneManager *tSceneManager, const uint8_t *const data, size_t length, int numInstances, bool keepData, int priority, int layer, bool loadResourcesAsync) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// auto *asset = sceneManager->loadGlbFromBuffer((const uint8_t *)data, length, numInstances, keepData, priority, layer, loadResourcesAsync); -// return reinterpret_cast(asset); -// } - -// EMSCRIPTEN_KEEPALIVE TCamera *SceneManager_getCameraByName(TSceneManager *tSceneManager, EntityId entityId, const char *name) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// return nullptr; -// } - -// 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 TSceneAsset *SceneManager_createGeometry( -// TSceneManager *tSceneManager, -// float *vertices, -// int numVertices, -// float *normals, -// int numNormals, -// float *uvs, -// int numUvs, -// uint16_t *indices, -// int numIndices, -// int primitiveType, -// TMaterialInstance **tMaterialInstances, -// int materialInstanceCount, -// bool keepData) -// { -// auto sceneManager = reinterpret_cast(tSceneManager); -// auto castedNumVertices = static_cast(numVertices); -// auto castedNumNormals = static_cast(numNormals); -// auto castedNumUvs = static_cast(numUvs); -// auto castedNumIndices = static_cast(numIndices); -// auto castedPrimitiveType = static_cast(primitiveType); -// auto materialInstances = reinterpret_cast(tMaterialInstances); - -// auto *asset = sceneManager->createGeometry( -// vertices, -// castedNumVertices, -// normals, -// castedNumNormals, -// uvs, -// castedNumUvs, -// indices, -// castedNumIndices, -// castedPrimitiveType, -// materialInstances, -// materialInstanceCount, -// keepData); -// return reinterpret_cast(asset); -// } - -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyMaterialInstance(TSceneManager *sceneManager, TMaterialInstance *instance) -// { -// ((SceneManager *)sceneManager)->destroy(reinterpret_cast(instance)); -// } - -// EMSCRIPTEN_KEEPALIVE int SceneManager_removeFromScene(TSceneManager *sceneManager, EntityId entityId) -// { -// return ((SceneManager *)sceneManager)->removeFromScene(entityId); -// } - -// EMSCRIPTEN_KEEPALIVE int SceneManager_addToScene(TSceneManager *sceneManager, EntityId entityId) -// { -// return ((SceneManager *)sceneManager)->addToScene(entityId); -// } - -// EMSCRIPTEN_KEEPALIVE void SceneManager_transformToUnitCube(TSceneManager *sceneManager, EntityId entityId) -// { -// ((SceneManager *)sceneManager)->transformToUnitCube(entityId); -// } - -// EMSCRIPTEN_KEEPALIVE TAnimationManager *SceneManager_getAnimationManager(TSceneManager *tSceneManager) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// auto *animationManager = sceneManager->getAnimationManager(); -// return reinterpret_cast(animationManager); -// } - -// EMSCRIPTEN_KEEPALIVE EntityId SceneManager_addLight( -// TSceneManager *tSceneManager, -// uint8_t type, -// float colour, -// float intensity, -// float posX, -// float posY, -// float posZ, -// float dirX, -// float dirY, -// float dirZ, -// float falloffRadius, -// float spotLightConeInner, -// float spotLightConeOuter, -// float sunAngularRadius, -// float sunHaloSize, -// float sunHaloFallof, -// bool shadows) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// auto entity = sceneManager->addLight( -// (LightManager::Type)type, colour, intensity, posX, posY, posZ, dirX, dirY, dirZ, falloffRadius, spotLightConeInner, spotLightConeOuter, sunAngularRadius, sunHaloSize, sunHaloFallof, shadows); -// return Entity::smuggle(entity); -// } - -// EMSCRIPTEN_KEEPALIVE void SceneManager_removeLight(TSceneManager *tSceneManager, EntityId entityId) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// sceneManager->removeLight(utils::Entity::import(entityId)); -// } - -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyAll(TSceneManager *tSceneManager) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// sceneManager->destroyAll(); -// } - -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyAsset(TSceneManager *tSceneManager, TSceneAsset *tSceneAsset) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// auto *sceneAsset = reinterpret_cast(tSceneAsset); -// sceneManager->destroy(sceneAsset); -// } - -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyLights(TSceneManager *tSceneManager) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// sceneManager->destroyLights(); -// } - -// EMSCRIPTEN_KEEPALIVE void SceneManager_destroyAssets(TSceneManager *tSceneManager) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// sceneManager->destroyAssets(); -// } - -// EMSCRIPTEN_KEEPALIVE TNameComponentManager *SceneManager_getNameComponentManager(TSceneManager *tSceneManager) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// return reinterpret_cast(sceneManager->getNameComponentManager()); -// } - -// EMSCRIPTEN_KEEPALIVE TSceneAsset *SceneManager_createGrid(TSceneManager *tSceneManager, TMaterial *tMaterial) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// auto *material = reinterpret_cast(tMaterial); -// auto *grid = sceneManager->createGrid(material); -// return reinterpret_cast(grid); -// } - -// EMSCRIPTEN_KEEPALIVE bool SceneManager_isGridEntity(TSceneManager *tSceneManager, EntityId entityId) -// { -// auto *sceneManager = reinterpret_cast(tSceneManager); -// return sceneManager->isGridEntity(utils::Entity::import(entityId)); -// } -// } \ No newline at end of file