#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 { class RenderTicker { public: RenderTicker(filament::Renderer *renderer) : mRenderer(renderer) { } ~RenderTicker(); /// @brief /// @param frameTimeInNanos void render( uint64_t frameTimeInNanos ); /// @brief /// @param swapChain /// @param view /// @param numViews void setRenderable(filament::SwapChain *swapChain, filament::View **view, uint8_t numViews); /// @brief /// @param animationManager void addAnimationManager(AnimationManager* animationManager); /// @brief /// @param animationManager void removeAnimationManager(AnimationManager* animationManager); private: std::mutex mMutex; filament::Renderer *mRenderer = nullptr; std::vector mAnimationManagers; std::vector>> mRenderable; }; }