move set/remove stencilHighlight to View and implement via OverlayManager

This commit is contained in:
Nick Fisher
2025-07-01 10:13:47 +08:00
parent 96ef070be7
commit 0f9d2492e6
11 changed files with 382 additions and 140 deletions

View File

@@ -3,7 +3,7 @@
#include <chrono>
#include <mutex>
#include <vector>
#include <utility> // for std::pair
#include <utility>
#include <filament/Renderer.h>
#include <filament/SwapChain.h>
@@ -21,13 +21,18 @@
#include <filament/VertexBuffer.h>
#include "scene/AnimationManager.hpp"
#include "components/OverlayComponentManager.hpp"
namespace thermion
{
class RenderTicker
{
using ViewAttachment = std::pair<filament::SwapChain*, std::vector<filament::View*>>;
public:
RenderTicker(
filament::Engine *engine,
@@ -54,14 +59,21 @@ namespace thermion
/// @param animationManager
void removeAnimationManager(AnimationManager* animationManager);
/// @brief
/// @param overlayComponentManager
void addOverlayManager(OverlayComponentManager *overlayComponentManager) {
mOverlayComponentManager = overlayComponentManager;
}
private:
std::mutex mMutex;
filament::Engine *mEngine = nullptr;
filament::Renderer *mRenderer = nullptr;
filament::Engine *mEngine = std::nullptr_t();
filament::Renderer *mRenderer = std::nullptr_t();
std::vector<AnimationManager*> mAnimationManagers;
std::vector<std::pair<filament::SwapChain*, std::vector<filament::View*>>> mRenderable;
OverlayComponentManager *mOverlayComponentManager = std::nullptr_t();
std::vector<ViewAttachment> mRenderable;
std::chrono::high_resolution_clock::time_point mLastRender;
};
}