Atoms Crowd  7.0.0
MeshExporterFactory.h
1 #pragma once
2 // ===========================================================================
3 // Copyright (c) 2015 Toolchefs Ltd. All rights reserved.
4 //
5 // Use of this software is subject to the terms of the Toolchefs license
6 // agreement provided at the time of installation or download, or which
7 // otherwise accompanies this software in either electronic or hard copy form.
8 // ===========================================================================
9 
10 #include <AtomsCore/Globals.h>
11 #include <Atoms/Exporters/BaseMeshExporter.h>
12 #include <map>
13 #include <vector>
14 
15 namespace Atoms
16 {
18 
20  class ATOMS_EXPORT MeshExporterFactory
21  {
22  public:
23 
24  typedef AtomsPtr<BaseMeshExporter>(*creatorFn)();
25 
28 
30 
34  AtomsPtr<BaseMeshExporter> createMeshExporter(const std::string& typeName);
35 
37 
41  void registerMeshExporter(const std::string& name, creatorFn funct);
42 
44 
47  void deregisterMeshExporter(const std::string& name);
48 
50 
53  std::vector<std::string> getRegisteredMeshExporters();
54 
56 
60  bool isRegistered(const std::string& name);
61 
62  private:
63 
66 
69 
72 
74  MeshExporterFactory& operator=(const MeshExporterFactory&);
75 
76  typedef std::map<std::string, creatorFn> FactoryMap;
77 
79 
82  FactoryMap m_factoryMap;
83  };
84 }
AnimExporter factory.
Definition: MeshExporterFactory.h:21
void registerMeshExporter(const std::string &name, creatorFn funct)
Registers a new Mesh Exporter type in the factory.
void deregisterMeshExporter(const std::string &name)
De-register a Mesh Exporter type from the factory.
static MeshExporterFactory & instance()
Singleton access.
std::vector< std::string > getRegisteredMeshExporters()
Gets all registered Mesh Exporter.
AtomsPtr< BaseMeshExporter > createMeshExporter(const std::string &typeName)
Creates an Mesh Exporter.
bool isRegistered(const std::string &name)
Checks if a Mesh Exporter type with the given name is registered.
Atoms namespace.
Definition: Agent.h:29