00001
00002
00003
00004
00005 #ifndef __I_MESH_CACHE_H_INCLUDED__
00006 #define __I_MESH_CACHE_H_INCLUDED__
00007
00008 #include "IReferenceCounted.h"
00009 #include "path.h"
00010
00011 namespace irr
00012 {
00013
00014 namespace scene
00015 {
00016 class IMesh;
00017 class IAnimatedMesh;
00018 class IAnimatedMeshSceneNode;
00019 class IMeshLoader;
00020
00022
00027 class IMeshCache : public virtual IReferenceCounted
00028 {
00029 public:
00030
00032 virtual ~IMeshCache() {}
00033
00035
00050 virtual void addMesh(const io::path& name, IAnimatedMesh* mesh) = 0;
00051
00053
00057 virtual void removeMesh(const IAnimatedMesh* const mesh) = 0;
00058
00060
00064 virtual void removeMesh(const IMesh* const mesh) = 0;
00065
00067
00072 virtual u32 getMeshCount() const = 0;
00073
00075
00077 virtual s32 getMeshIndex(const IAnimatedMesh* const mesh) const = 0;
00078
00080
00082 virtual s32 getMeshIndex(const IMesh* const mesh) const = 0;
00083
00085
00091 virtual IAnimatedMesh* getMeshByIndex(u32 index) = 0;
00092
00094
00095 _IRR_DEPRECATED_ IAnimatedMesh* getMeshByFilename(const io::path& filename)
00096 {
00097 return getMeshByName(filename);
00098 }
00099
00101
00102 _IRR_DEPRECATED_ const io::path& getMeshFilename(u32 index) const
00103 {
00104 return getMeshName(index).getInternalName();
00105 }
00106
00108
00109 _IRR_DEPRECATED_ const io::path& getMeshFilename(const IAnimatedMesh* const mesh) const
00110 {
00111 return getMeshName(mesh).getInternalName();
00112 }
00113
00115
00116 _IRR_DEPRECATED_ const io::path& getMeshFilename(const IMesh* const mesh) const
00117 {
00118 return getMeshName(mesh).getInternalName();
00119 }
00120
00122
00123 _IRR_DEPRECATED_ bool setMeshFilename(u32 index, const io::path& filename)
00124 {
00125 return renameMesh(index, filename);
00126 }
00127
00129
00130 _IRR_DEPRECATED_ bool setMeshFilename(const IAnimatedMesh* const mesh, const io::path& filename)
00131 {
00132 return renameMesh(mesh, filename);
00133 }
00134
00136
00137 _IRR_DEPRECATED_ bool setMeshFilename(const IMesh* const mesh, const io::path& filename)
00138 {
00139 return renameMesh(mesh, filename);
00140 }
00141
00143
00145 virtual IAnimatedMesh* getMeshByName(const io::path& name) = 0;
00146
00148
00150 virtual const io::SNamedPath& getMeshName(u32 index) const = 0;
00151
00153
00155 virtual const io::SNamedPath& getMeshName(const IAnimatedMesh* const mesh) const = 0;
00156
00158
00160 virtual const io::SNamedPath& getMeshName(const IMesh* const mesh) const = 0;
00161
00163
00169 virtual bool renameMesh(u32 index, const io::path& name) = 0;
00170
00172
00178 virtual bool renameMesh(const IAnimatedMesh* const mesh, const io::path& name) = 0;
00179
00181
00187 virtual bool renameMesh(const IMesh* const mesh, const io::path& name) = 0;
00188
00190
00192 virtual bool isMeshLoaded(const io::path& name) = 0;
00193
00195
00199 virtual void clear() = 0;
00200
00202
00204 virtual void clearUnusedMeshes() = 0;
00205 };
00206
00207
00208 }
00209 }
00210
00211 #endif
00212