add TScene

This commit is contained in:
Nick Fisher
2025-03-17 16:38:30 +08:00
parent 8b34934755
commit 20ea43a809
2 changed files with 64 additions and 0 deletions

View File

@@ -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

View File

@@ -0,0 +1,38 @@
#include "c_api/TScene.h"
#include <filament/Engine.h>
#include <filament/Fence.h>
#include <filament/Material.h>
#include <filament/Scene.h>
#include <filament/Skybox.h>
#include <filament/Texture.h>
#include <filament/TextureSampler.h>
#include <filament/TransformManager.h>
#include <filament/View.h>
#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<Scene *>(tScene);
scene->addEntity(utils::Entity::import(entityId));
}
EMSCRIPTEN_KEEPALIVE void Scene_setSkybox(TScene* tScene, TSkybox *tSkybox) {
auto *scene = reinterpret_cast<Scene *>(tScene);
auto *skybox = reinterpret_cast<Skybox *>(tSkybox);
scene->setSkybox(skybox);
}
#ifdef __cplusplus
}
}
#endif