mirror of
https://github.com/minetest/irrlicht.git
synced 2024-12-25 15:42:25 +01:00
ffd7b63af0
C++ has undefined behavior for identifiers starting with __ or with _ followed by an uppercase letter. We still have many more (in IrrCompileConfig.h and in all header-guards), will likely replace those later as well. As a workaround for users which might use irrlicht defines in their code, I've added the header irrLegacyDefines.h Including that allows to continue using old defines for a while - or make it easier to have code which compiles with old and new Irrlicht library versions. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6251 dfc29bdd-3216-0410-991c-e03cc46cb475
82 lines
2.5 KiB
C++
82 lines
2.5 KiB
C++
#ifndef IRR_C_MESH_TEXTURE_LOADER_H_INCLUDED
|
|
#define IRR_C_MESH_TEXTURE_LOADER_H_INCLUDED
|
|
|
|
#include "IMeshTextureLoader.h"
|
|
|
|
namespace irr
|
|
{
|
|
namespace io
|
|
{
|
|
class IFileSystem;
|
|
} // end namespace io
|
|
namespace video
|
|
{
|
|
class IVideoDriver;
|
|
}
|
|
|
|
namespace scene
|
|
{
|
|
|
|
class CMeshTextureLoader : public IMeshTextureLoader
|
|
{
|
|
public:
|
|
CMeshTextureLoader(irr::io::IFileSystem* fs, irr::video::IVideoDriver* driver);
|
|
|
|
//! Set a custom texture path.
|
|
/** This is the first path the texture-loader should search. */
|
|
virtual void setTexturePath(const irr::io::path& path) IRR_OVERRIDE;
|
|
|
|
//! Get the current custom texture path.
|
|
virtual const irr::io::path& getTexturePath() const IRR_OVERRIDE;
|
|
|
|
//! Get the texture by searching for it in all paths that makes sense for the given textureName.
|
|
/** Usually you do not have to use this method, it is used internally by IMeshLoader's.
|
|
\param textureName Texturename as used in the mesh-format
|
|
\return Pointer to the texture. Returns 0 if loading failed.*/
|
|
virtual irr::video::ITexture* getTexture(const irr::io::path& textureName) IRR_OVERRIDE;
|
|
|
|
//! Meshloaders will search paths relative to the meshFile.
|
|
/** Usually you do not have to use this method, it is used internally by IMeshLoader's.
|
|
Any values you set here will likely be overwritten internally. */
|
|
virtual void setMeshFile(const irr::io::IReadFile* meshFile) IRR_OVERRIDE;
|
|
|
|
//! Meshloaders will try to look relative to the path of the materialFile
|
|
/** Usually you do not have to use this method, it is used internally by IMeshLoader's.
|
|
Any values you set here will likely be overwritten internally. */
|
|
virtual void setMaterialFile(const irr::io::IReadFile* materialFile) IRR_OVERRIDE;
|
|
|
|
protected:
|
|
// make certain path's have a certain internal format
|
|
void preparePath(irr::io::path& directory)
|
|
{
|
|
if (!directory.empty())
|
|
{
|
|
if (directory == IRR_TEXT("."))
|
|
directory = IRR_TEXT("");
|
|
|
|
directory.replace(IRR_TEXT('\\'),IRR_TEXT('/'));
|
|
if (directory.lastChar() != IRR_TEXT('/'))
|
|
directory.append(IRR_TEXT('/'));
|
|
}
|
|
}
|
|
|
|
// Save the texturename when it's a an existing file
|
|
bool checkTextureName( const irr::io::path& filename);
|
|
|
|
private:
|
|
irr::io::IFileSystem * FileSystem;
|
|
irr::video::IVideoDriver* VideoDriver;
|
|
irr::io::path TexturePath;
|
|
const irr::io::IReadFile* MeshFile;
|
|
irr::io::path MeshPath;
|
|
const irr::io::IReadFile* MaterialFile;
|
|
irr::io::path MaterialPath;
|
|
irr::io::path TextureName;
|
|
};
|
|
|
|
} // end namespace scene
|
|
} // end namespace irr
|
|
|
|
#endif
|
|
|