// // Created by martin on 12.11.21. // #ifndef ANIMTESTBED_ANIMATIONCONTROLLER_H #define ANIMTESTBED_ANIMATIONCONTROLLER_H #include #include #include #include #include struct SkinnedMesh; struct AnimNode; struct AnimationController { explicit AnimationController(SkinnedMesh* skinned_mesh); virtual ~AnimationController(); void SetBlendAnims( ozz::animation::Animation* blend_anim_A, ozz::animation::Animation* blend_anim_B) { } void ResetAnims() { } void Update(float dt); void Evaluate(); void DrawDebugUi(); float m_current_time; ozz::vector m_local_matrices; ozz::vector m_local_matrices_A; ozz::vector m_local_matrices_B; ozz::vector m_local_matrices_blended; ozz::animation::SamplingCache m_sampling_cache_A; ozz::animation::SamplingCache m_sampling_cache_B; SkinnedMesh* m_skinned_mesh = nullptr; AnimNode* m_output_node; std::vector m_anim_nodes; }; #endif //ANIMTESTBED_ANIMATIONCONTROLLER_H