Silence many of the annoying warnings that are printed when loading the overworld

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@10757 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2012-01-30 00:54:13 +00:00
parent 973a7cd4bb
commit e346b44ba1
7 changed files with 31 additions and 17 deletions

View File

@ -860,7 +860,8 @@ void IrrDriver::removeCameraSceneNode(scene::ICameraSceneNode *camera)
*/
video::ITexture *IrrDriver::getTexture(const std::string &filename,
bool is_premul,
bool is_prediv)
bool is_prediv,
bool complain_if_not_found)
{
video::ITexture* out;
if(!is_premul && !is_prediv)
@ -923,13 +924,12 @@ video::ITexture *IrrDriver::getTexture(const std::string &filename,
out = m_video_driver->addTexture(filename.c_str(), img, NULL);
} // if is_premul or is_prediv
#ifndef NDEBUG
if (out == NULL)
if (complain_if_not_found && out == NULL)
{
printf("[IrrDriver] Texture '%s' not found; Put a breakpoint at line %s:%i to debug!\n",
filename.c_str(), __FILE__, __LINE__);
}
#endif
return out;
} // getTexture

View File

@ -144,7 +144,8 @@ public:
void setAmbientLight(const video::SColor &light);
video::ITexture *getTexture(const std::string &filename,
bool is_premul=false,
bool is_prediv=false);
bool is_prediv=false,
bool complain_if_not_found=true);
void grabAllTextures(const scene::IMesh *mesh);
void dropAllTextures(const scene::IMesh *mesh);
scene::IMesh *createQuadMesh(const video::SMaterial *material=NULL,

View File

@ -471,11 +471,12 @@ Material::Material(const XMLNode *node, int index)
* \param index Unique index in material_manager.
* \param is_full_path If the fname contains the full path.
*/
Material::Material(const std::string& fname, int index, bool is_full_path)
Material::Material(const std::string& fname, int index, bool is_full_path,
bool complain_if_not_found)
{
m_texname = fname;
init(index);
install(is_full_path);
install(is_full_path, complain_if_not_found);
} // Material
//-----------------------------------------------------------------------------
@ -537,19 +538,22 @@ void Material::init(unsigned int index)
} // init
//-----------------------------------------------------------------------------
void Material::install(bool is_full_path)
void Material::install(bool is_full_path, bool complain_if_not_found)
{
const std::string &full_path = is_full_path
? m_texname
: file_manager->getTextureFile(m_texname);
if (full_path.size() == 0)
if (complain_if_not_found && full_path.size() == 0)
{
fprintf(stderr, "[Material] WARNING, cannot find texture '%s'\n", m_texname.c_str());
}
m_texture = irr_driver->getTexture(full_path,
isPreMul(), isPreDiv());
isPreMul(),
isPreDiv(),
complain_if_not_found);
if (m_texture == NULL) return;

View File

@ -210,14 +210,15 @@ private:
std::map<scene::IMeshBuffer*, BubbleEffectProvider*> m_bubble_provider;
void init (unsigned int index);
void install (bool is_full_path=false);
void install (bool is_full_path=false, bool complain_if_not_found=true);
void initCustomSFX(const XMLNode *sfx);
void initParticlesEffect(const XMLNode *node);
public:
Material(const XMLNode *node, int index);
Material(const std::string& fname, int index,
bool is_full_path=false);
bool is_full_path=false,
bool complain_if_not_found=true);
~Material ();
void setSFXSpeed(SFXBase *sfx, float speed) const;

View File

@ -265,7 +265,8 @@ void MaterialManager::popTempMaterial()
*/
Material *MaterialManager::getMaterial(const std::string& fname,
bool is_full_path,
bool make_permanent)
bool make_permanent,
bool complain_if_not_found)
{
if(fname=="")
{
@ -287,7 +288,7 @@ Material *MaterialManager::getMaterial(const std::string& fname,
}
// Add the new material
Material* m=new Material(fname, m_materials.size(), is_full_path);
Material* m=new Material(fname, m_materials.size(), is_full_path, complain_if_not_found);
m_materials.push_back(m);
if(make_permanent)
{

View File

@ -62,8 +62,10 @@ public:
void setAllUntexturedMaterialFlags(scene::IMeshBuffer *mb) const;
int addEntity (Material *m);
Material *getMaterial (const std::string& t, bool is_full_path=false,
bool make_permanent=false);
Material *getMaterial (const std::string& t,
bool is_full_path=false,
bool make_permanent=false,
bool complain_if_not_found=true);
void addSharedMaterial(const std::string& filename);
bool pushTempMaterial (const std::string& filename);
bool pushTempMaterial (const XMLNode *root, const std::string& filename);

View File

@ -539,7 +539,12 @@ void Track::convertTrackToBullet(scene::ISceneNode *node)
if(t)
{
std::string image = std::string(core::stringc(t->getName()).c_str());
material=material_manager->getMaterial(StringUtils::getBasename(image));
// the third boolean argument is false because at this point we're
// dealing physics, so it's useless to warn about missing textures,
// we'd just get duplicate/useless warnings
material=material_manager->getMaterial(StringUtils::getBasename(image),
false, false, false);
// Special gfx meshes will not be stored as a normal physics body,
// but converted to a collision body only, so that ray tests
// against them can be done.