Loading [MathJax]/extensions/TeX/AMSmath.js
Radium Engine  1.5.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
AssimpAnimationDataLoader.hpp
1 #pragma once
2 
3 #include <Core/Asset/AnimationTime.hpp>
4 #include <Core/Asset/DataLoader.hpp>
5 #include <IO/RaIO.hpp>
6 
7 struct aiScene;
8 struct aiAnimation;
9 struct aiNodeAnim;
10 
11 namespace Ra {
12 namespace Core {
13 namespace Asset {
14 class AnimationData;
15 struct HandleAnimation;
16 } // namespace Asset
17 } // namespace Core
18 
19 namespace IO {
20 
26  : public Core::Asset::DataLoader<Core::Asset::AnimationData>
27 {
28  public:
29  explicit AssimpAnimationDataLoader( const bool VERBOSE_MODE = false );
30 
32 
33  void loadData( const aiScene* scene,
34  std::vector<std::unique_ptr<Core::Asset::AnimationData>>& data ) override;
35 
36  protected:
40  bool sceneHasAnimation( const aiScene* scene ) const;
41 
45  uint sceneAnimationSize( const aiScene* scene ) const;
46 
50  void fetchName( const aiAnimation* anim, Core::Asset::AnimationData* data ) const;
51 
55  void fetchTime( const aiAnimation* anim, Core::Asset::AnimationData* data ) const;
56 
60  void loadAnimationData( const aiScene* scene,
61  std::vector<std::unique_ptr<Core::Asset::AnimationData>>& data ) const;
62 
66  void fetchAnimation( const aiAnimation* anim, Core::Asset::AnimationData* data ) const;
67 
72  void fetchHandleAnimation( aiNodeAnim* node,
74  const Core::Asset::AnimationTime::Time dt ) const;
75 };
76 
77 } // namespace IO
78 } // namespace Ra
~AssimpAnimationDataLoader() override
DESTRUCTOR.
Definition: Cage.cpp:3