add Engine_destroyCamera

This commit is contained in:
Nick Fisher
2025-04-19 09:49:19 +08:00
parent 8228486ef3
commit 4cb725d47e
3 changed files with 14 additions and 4 deletions

View File

@@ -37,6 +37,7 @@ EMSCRIPTEN_KEEPALIVE void Engine_destroyScene(TEngine *tEngine, TScene *tScene);
EMSCRIPTEN_KEEPALIVE void Engine_destroyColorGrading(TEngine *tEngine, TColorGrading *tColorGrading);
EMSCRIPTEN_KEEPALIVE TCamera *Engine_createCamera(TEngine* tEngine);
EMSCRIPTEN_KEEPALIVE void Engine_destroyCamera(TEngine *tEngine, TCamera *tCamera);
EMSCRIPTEN_KEEPALIVE TView *Engine_createView(TEngine *tEngine);
EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine* tEngine, EntityId entityId);
EMSCRIPTEN_KEEPALIVE TTransformManager *Engine_getTransformManager(TEngine *engine);

View File

@@ -1,5 +1,6 @@
#include "c_api/TEngine.h"
#include <filament/Camera.h>
#include <filament/Engine.h>
#include <filament/Fence.h>
#include <filament/IndirectLight.h>
@@ -179,6 +180,13 @@ namespace thermion
return reinterpret_cast<TCamera *>(camera);
}
EMSCRIPTEN_KEEPALIVE void Engine_destroyCamera(TEngine *tEngine, TCamera *tCamera) {
auto *engine = reinterpret_cast<Engine *>(tEngine);
auto *camera = reinterpret_cast<Camera *>(tCamera);
engine->destroyCameraComponent(camera->getEntity());
utils::EntityManager::get().destroy(camera->getEntity());
}
EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine *tEngine, EntityId entityId)
{
auto *engine = reinterpret_cast<Engine *>(tEngine);