Loading [MathJax]/extensions/TeX/AMSsymbols.js
Radium Engine  1.5.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
AssimpHandleDataLoader.hpp
1 #pragma once
2 
3 #include <map>
4 #include <set>
5 
6 #include <Core/Asset/DataLoader.hpp>
7 #include <Core/Types.hpp>
8 #include <IO/RaIO.hpp>
9 
10 struct aiScene;
11 struct aiNode;
12 struct aiMesh;
13 struct aiBone;
14 struct aiString;
15 
16 namespace Ra {
17 namespace Core {
18 namespace Asset {
19 class HandleData;
20 struct HandleComponentData;
21 } // namespace Asset
22 } // namespace Core
23 
24 namespace IO {
25 
26 class RA_IO_API AssimpHandleDataLoader : public Core::Asset::DataLoader<Core::Asset::HandleData>
27 {
28  public:
30  explicit AssimpHandleDataLoader( const bool VERBOSE_MODE = false );
31 
33  ~AssimpHandleDataLoader() override;
34 
36  void loadData( const aiScene* scene,
37  std::vector<std::unique_ptr<Core::Asset::HandleData>>& data ) override;
38 
39  private:
41  void loadHandleData( const aiScene* scene,
42  std::vector<std::unique_ptr<Core::Asset::HandleData>>& data ) const;
43  void loadHandleComponentDataFrame( const aiScene* scene,
44  const aiString& boneName,
45  Core::Asset::HandleComponentData& data ) const;
46  void loadHandleComponentDataWeights( const aiBone* bone,
47  const std::string& meshName,
48  Core::Asset::HandleComponentData& data ) const;
49  void
50  fillHandleData( const std::string& node,
51  const std::vector<std::pair<std::string, std::string>>& edgeList,
52  const std::map<std::string, Core::Asset::HandleComponentData>& mapBone2Data,
53  std::map<std::string, uint>& nameTable,
54  Core::Asset::HandleData* data ) const;
55 };
56 
57 } // namespace IO
58 } // namespace Ra
Definition: Cage.cpp:3