Pioneer
BinaryConverter.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _SCENEGRAPH_BINARYCONVERTER_H
5 #define _SCENEGRAPH_BINARYCONVERTER_H
6 
14 #include "BaseLoader.h"
15 #include "Billboard.h"
16 #include "CollisionGeometry.h"
17 #include "FileSystem.h"
18 #include "LOD.h"
19 #include "StaticGeometry.h"
20 #include "Thruster.h"
21 #include <functional>
22 
23 namespace Serializer {
24  class Reader;
25  class Writer;
26 } // namespace Serializer
27 
28 namespace SceneGraph {
29  class Label3D;
30  class Model;
31 
32  class BinaryConverter : public BaseLoader {
33  public:
35  void Save(const std::string &filename, Model *m);
36  void Save(const std::string &filename, const std::string &savepath, Model *m, const bool bInPlace);
37  Model *Load(const std::string &filename);
38  Model *Load(const std::string &filename, const std::string &path);
39  Model *Load(const std::string &filename, RefCountedPtr<FileSystem::FileData> binfile);
40 
41  //if you implement any new node types, you must also register a loader function
42  //before calling Load.
43  void RegisterLoader(const std::string &typeName, std::function<Node *(NodeDatabase &)>);
44 
45  private:
46  Model *CreateModel(const std::string &filename, Serializer::Reader &);
47  void SaveMaterials(Serializer::Writer &, Model *m);
48  void LoadMaterials(Serializer::Reader &);
49  void SaveAnimations(Serializer::Writer &, Model *m);
50  void LoadAnimations(Serializer::Reader &);
51  ModelDefinition FindModelDefinition(const std::string &);
52 
53  Node *LoadNode(Serializer::Reader &);
54  //this is a very simple loader so it's implemented here
55  static Label3D *LoadLabel3D(NodeDatabase &);
56 
57  bool m_patternsUsed;
58  std::map<std::string, std::function<Node *(NodeDatabase &)>> m_loaders;
59  };
60 } // namespace SceneGraph
61 
62 #endif
Definition: Renderer.h:39
Definition: BaseLoader.h:18
Definition: BinaryConverter.h:32
void Save(const std::string &filename, Model *m)
Definition: BinaryConverter.cpp:82
void RegisterLoader(const std::string &typeName, std::function< Node *(NodeDatabase &)>)
Definition: BinaryConverter.cpp:77
Model * Load(const std::string &filename)
Definition: BinaryConverter.cpp:156
BinaryConverter(Graphics::Renderer *)
Definition: BinaryConverter.cpp:63
Definition: Label3D.h:22
Definition: Model.h:94
Definition: Node.h:72
Definition: Serializer.h:110
Definition: Serializer.h:35
Definition: CityOnPlanet.h:23
Definition: GeomTree.h:9
Definition: LoaderDefinitions.h:69
Definition: Node.h:63