TDME2  1.9.200
MeshManager.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <unordered_map>
5 
6 #include <tdme/tdme.h>
11 
12 using std::string;
13 using std::unordered_map;
14 
17 
18 /**
19  * Mesh manager
20  * @author Andreas Drewke
21  */
23 {
24 private:
25  unordered_map<string, MeshManager_MeshManaged*> meshes;
26 
27 public:
28  // forbid class copy
30 
31  /**
32  * Public constructor
33  */
34  MeshManager();
35 
36  /**
37  * Destructor
38  */
39  ~MeshManager();
40 
41  /**
42  * Get mesh from managed meshes
43  * @param meshId mesh id
44  * @return object node mesh or null
45  */
46  inline ObjectNodeMesh* getMesh(const string& meshId) {
47  // check if we already manage this mesh
48  auto meshManagedIt = meshes.find(meshId);
49  if (meshManagedIt != meshes.end()) {
50  auto meshManaged = meshManagedIt->second;
51  meshManaged->incrementReferenceCounter();
52  return meshManaged->getMesh();
53  }
54  // otherwise no mesh
55  return nullptr;
56  }
57 
58  /**
59  * Adds a mesh to manager
60  * @param meshId mesh id
61  * @param mesh mesh
62  */
63  void addMesh(const string& meshId, ObjectNodeMesh* mesh);
64 
65  /**
66  * Removes a mesh from manager
67  * @param meshId mesh id
68  */
69  void removeMesh(const string& meshId);
70 
71 };
unordered_map< string, MeshManager_MeshManaged * > meshes
Definition: MeshManager.h:25
void removeMesh(const string &meshId)
Removes a mesh from manager.
Definition: MeshManager.cpp:36
void addMesh(const string &meshId, ObjectNodeMesh *mesh)
Adds a mesh to manager.
Definition: MeshManager.cpp:27
ObjectNodeMesh * getMesh(const string &meshId)
Get mesh from managed meshes.
Definition: MeshManager.h:46
Object node mesh specifically for rendering.
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6