#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Log.hpp" #include "components/Animation.hpp" namespace thermion { using namespace filament; using namespace filament::gltfio; using namespace utils; struct BoneAnimation : Animation { int lengthInFrames; size_t boneIndex; size_t skinIndex = 0; float frameLengthInMs = 0; std::vector frameData; float fadeOutInSecs = 0; float fadeInInSecs = 0; float maxDelta = 1.0f; }; /// @brief /// /// struct BoneAnimationComponent { filament::gltfio::FilamentInstance * target; std::vector animations; }; class BoneAnimationComponentManager : public utils::SingleInstanceComponentManager { public: BoneAnimationComponentManager( filament::TransformManager &transformManager, filament::RenderableManager &renderableManager) : mTransformManager(transformManager), mRenderableManager(renderableManager) {}; ~BoneAnimationComponentManager() {}; void addAnimationComponent(FilamentInstance *target); void removeAnimationComponent(FilamentInstance *target); void update(); private: filament::TransformManager &mTransformManager; filament::RenderableManager &mRenderableManager; }; }