#pragma once #include #include #include #include // for std::pair #include #include #include #include #include #include #include #include #include #include #include #include #include #include "scene/AnimationManager.hpp" namespace thermion { typedef std::chrono::time_point time_point_t; using namespace std::chrono; class RenderTicker { public: RenderTicker(filament::Renderer *renderer) : mRenderer(renderer) { } ~RenderTicker(); void render( uint64_t frameTimeInNanos ); void setRenderable(filament::SwapChain *swapChain, filament::View **view, uint8_t numViews); void addAnimationManager(AnimationManager* animationManager); void removeAnimationManager(AnimationManager* animationManager); private: std::mutex mMutex; filament::Renderer *mRenderer = nullptr; std::vector mAnimationManagers; std::vector>> mRenderable; }; }