feat: expose setCastShadows/setReceiveShadows

This commit is contained in:
Nick Fisher
2025-03-05 14:47:55 +08:00
parent cca9fba79f
commit 593bca3365
7 changed files with 206 additions and 39 deletions

View File

@@ -72,21 +72,45 @@ namespace thermion
const auto &entity = utils::Entity::import(entityId);
auto renderableInstance = renderableManager->getInstance(entity);
if (!renderableInstance.isValid()) {
Log("Error: invalid renderable");
return false;
}
return renderableManager->isShadowCaster(renderableInstance);
}
EMSCRIPTEN_KEEPALIVE void RenderableManager_setCastShadows(TRenderableManager *tRenderableManager, EntityId entityId, bool enabled) {
auto *renderableManager = reinterpret_cast<filament::RenderableManager *>(tRenderableManager);
const auto &entity = utils::Entity::import(entityId);
auto renderableInstance = renderableManager->getInstance(entity);
if (!renderableInstance.isValid()) {
Log("Error: invalid renderable");
return;
}
return renderableManager->setCastShadows(renderableInstance, enabled);
}
EMSCRIPTEN_KEEPALIVE bool RenderableManager_isShadowReceiver(TRenderableManager *tRenderableManager, EntityId entityId) {
auto *renderableManager = reinterpret_cast<filament::RenderableManager *>(tRenderableManager);
const auto &entity = utils::Entity::import(entityId);
auto renderableInstance = renderableManager->getInstance(entity);
if (!renderableInstance.isValid()) {
Log("Error: invalid renderable");
return false;
}
return renderableManager->isShadowReceiver(renderableInstance);
}
EMSCRIPTEN_KEEPALIVE void RenderableManager_setReceiveShadows(TRenderableManager *tRenderableManager, EntityId entityId, bool enabled) {
auto *renderableManager = reinterpret_cast<filament::RenderableManager *>(tRenderableManager);
const auto &entity = utils::Entity::import(entityId);
auto renderableInstance = renderableManager->getInstance(entity);
if (!renderableInstance.isValid()) {
Log("Error: invalid renderable");
return;
}
return renderableManager->setReceiveShadows(renderableInstance, enabled);
}
EMSCRIPTEN_KEEPALIVE bool RenderableManager_getFogEnabled(TRenderableManager *tRenderableManager, EntityId entityId) {
auto *renderableManager = reinterpret_cast<filament::RenderableManager *>(tRenderableManager);
const auto &entity = utils::Entity::import(entityId);