move set/remove stencilHighlight to View and implement via OverlayManager
This commit is contained in:
44
thermion_dart/native/src/c_api/TOverlayManager.cpp
Normal file
44
thermion_dart/native/src/c_api/TOverlayManager.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifdef __EMSCRIPTEN__
|
||||
#include <emscripten.h>
|
||||
#endif
|
||||
|
||||
#include "Log.hpp"
|
||||
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/RenderTarget.h>
|
||||
#include <filament/Renderer.h>
|
||||
#include <filament/View.h>
|
||||
#include <utils/Entity.h>
|
||||
|
||||
#include "c_api/TOverlayManager.h"
|
||||
#include "components/OverlayComponentManager.hpp"
|
||||
|
||||
using namespace thermion;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE TOverlayManager *OverlayManager_create(TEngine *tEngine, TRenderer *tRenderer, TView *tView, TScene *tScene, TRenderTarget *tRenderTarget) {
|
||||
auto *engine = reinterpret_cast<filament::Engine *>(tEngine);
|
||||
auto *view = reinterpret_cast<filament::View *>(tView);
|
||||
auto *scene = reinterpret_cast<filament::Scene *>(tScene);
|
||||
auto *renderer = reinterpret_cast<filament::Renderer *>(tRenderer);
|
||||
auto *renderTarget = reinterpret_cast<filament::RenderTarget *>(tRenderTarget);
|
||||
auto *overlayManager = new OverlayComponentManager(engine, view, scene, renderTarget, renderer);
|
||||
return reinterpret_cast<TOverlayManager *>(overlayManager);
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void OverlayManager_addComponent(TOverlayManager *tOverlayManager, EntityId entityId, TMaterialInstance *tMaterialInstance) {
|
||||
auto *overlayManager = reinterpret_cast<OverlayComponentManager *>(tOverlayManager);
|
||||
auto *materialInstance = reinterpret_cast<filament::MaterialInstance *>(tMaterialInstance);
|
||||
overlayManager->addOverlayComponent(utils::Entity::import(entityId), materialInstance);
|
||||
}
|
||||
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void OverlayManager_removeComponent(TOverlayManager *tOverlayManager, EntityId entityId) {
|
||||
auto *overlayManager = reinterpret_cast<OverlayComponentManager *>(tOverlayManager);
|
||||
overlayManager->removeOverlayComponent(utils::Entity::import(entityId));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -55,4 +55,11 @@ EMSCRIPTEN_KEEPALIVE void RenderTicker_setRenderable(TRenderTicker *tRenderTicke
|
||||
renderTicker->setRenderable(swapChain, views, numViews);
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void RenderTicker_setOverlayManager(TRenderTicker *tRenderTicker, TOverlayManager *tOverlayManager) {
|
||||
auto *renderTicker = reinterpret_cast<RenderTicker *>(tRenderTicker);
|
||||
auto *overlayManager = reinterpret_cast<OverlayComponentManager *>(tOverlayManager);
|
||||
renderTicker->addOverlayManager(overlayManager);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -279,6 +279,11 @@ namespace thermion
|
||||
view->setFogOptions(fogOptions);
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void View_setName(TView* tView, const char *name) {
|
||||
auto view = reinterpret_cast<View *>(tView);
|
||||
view->setName(name);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user