Irrlicht 3D Engine
IMeshCache.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __I_MESH_CACHE_H_INCLUDED__
6 #define __I_MESH_CACHE_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "path.h"
10 
11 namespace irr
12 {
13 
14 namespace scene
15 {
16  class IMesh;
17  class IAnimatedMesh;
18  class IAnimatedMeshSceneNode;
19  class IMeshLoader;
20 
22 
27  class IMeshCache : public virtual IReferenceCounted
28  {
29  public:
30 
32  virtual ~IMeshCache() {}
33 
35 
50  virtual void addMesh(const io::path& name, IAnimatedMesh* mesh) = 0;
51 
53 
57  virtual void removeMesh(const IMesh* const mesh) = 0;
58 
60 
65  virtual u32 getMeshCount() const = 0;
66 
68 
70  virtual s32 getMeshIndex(const IMesh* const mesh) const = 0;
71 
73 
79  virtual IAnimatedMesh* getMeshByIndex(u32 index) = 0;
80 
82 
85  {
86  return getMeshByName(filename);
87  }
88 
90 
93  {
94  return getMeshName(index).getInternalName();
95  }
96 
98 
100  _IRR_DEPRECATED_ const io::path& getMeshFilename(const IMesh* const mesh) const
101  {
102  return getMeshName(mesh).getInternalName();
103  }
104 
106 
108  _IRR_DEPRECATED_ bool setMeshFilename(u32 index, const io::path& filename)
109  {
110  return renameMesh(index, filename);
111  }
112 
114 
116  _IRR_DEPRECATED_ bool setMeshFilename(const IMesh* const mesh, const io::path& filename)
117  {
118  return renameMesh(mesh, filename);
119  }
120 
122 
124  virtual IAnimatedMesh* getMeshByName(const io::path& name) = 0;
125 
127 
129  virtual const io::SNamedPath& getMeshName(u32 index) const = 0;
130 
132 
134  virtual const io::SNamedPath& getMeshName(const IMesh* const mesh) const = 0;
135 
137 
143  virtual bool renameMesh(u32 index, const io::path& name) = 0;
144 
146 
152  virtual bool renameMesh(const IMesh* const mesh, const io::path& name) = 0;
153 
155 
157  virtual bool isMeshLoaded(const io::path& name) = 0;
158 
160 
164  virtual void clear() = 0;
165 
167 
169  virtual void clearUnusedMeshes() = 0;
170  };
171 
172 
173 } // end namespace scene
174 } // end namespace irr
175 
176 #endif
177 
#define _IRR_DEPRECATED_
Defines a deprecated macro which generates a warning at compile time.
Definition: irrTypes.h:202
virtual ~IMeshCache()
Destructor.
Definition: IMeshCache.h:32
_IRR_DEPRECATED_ const io::path & getMeshFilename(const IMesh *const mesh) const
Get the name of a loaded mesh, if there is any. (Name is often identical to the filename).
Definition: IMeshCache.h:100
_IRR_DEPRECATED_ IAnimatedMesh * getMeshByFilename(const io::path &filename)
Returns a mesh based on its name (often a filename).
Definition: IMeshCache.h:84
virtual u32 getMeshCount() const =0
Returns amount of loaded meshes in the cache.
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
virtual void clear()=0
Clears the whole mesh cache, removing all meshes.
Class which holds the geometry of an object.
Definition: IMesh.h:71
virtual s32 getMeshIndex(const IMesh *const mesh) const =0
Returns current index number of the mesh or -1 when not found.
_IRR_DEPRECATED_ bool setMeshFilename(u32 index, const io::path &filename)
Renames a loaded mesh.
Definition: IMeshCache.h:108
signed int s32
32 bit signed variable.
Definition: irrTypes.h:70
Used in places where we identify objects by a filename, but don't actually work with the real filenam...
Definition: path.h:23
virtual IAnimatedMesh * getMeshByName(const io::path &name)=0
Returns a mesh based on its name.
virtual bool isMeshLoaded(const io::path &name)=0
Check if a mesh was already loaded.
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:62
_IRR_DEPRECATED_ bool setMeshFilename(const IMesh *const mesh, const io::path &filename)
Renames a loaded mesh.
Definition: IMeshCache.h:116
virtual bool renameMesh(u32 index, const io::path &name)=0
Renames a loaded mesh.
virtual void removeMesh(const IMesh *const mesh)=0
Removes the mesh from the cache.
Base class of most objects of the Irrlicht Engine.
virtual void addMesh(const io::path &name, IAnimatedMesh *mesh)=0
Adds a mesh to the internal list of loaded meshes.
Interface for an animated mesh.
Definition: IAnimatedMesh.h:20
const path & getInternalName() const
Definition: path.h:54
The mesh cache stores already loaded meshes and provides an interface to them.
Definition: IMeshCache.h:27
virtual IAnimatedMesh * getMeshByIndex(u32 index)=0
Returns a mesh based on its index number.
virtual void clearUnusedMeshes()=0
Clears all meshes that are held in the mesh cache but not used anywhere else.
_IRR_DEPRECATED_ const io::path & getMeshFilename(u32 index) const
Get the name of a loaded mesh, based on its index. (Name is often identical to the filename).
Definition: IMeshCache.h:92
virtual const io::SNamedPath & getMeshName(u32 index) const =0
Get the name of a loaded mesh, based on its index.