Skip to content

Commit

Permalink
fixed bug in .nga export if model contains textures in subdir(s)
Browse files Browse the repository at this point in the history
  • Loading branch information
stager13 committed Jul 12, 2016
1 parent 636bcaf commit 8fb1fe4
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions ngplant/p3dnga.cpp
Expand Up @@ -219,6 +219,7 @@ class NGAMaterialSaver : public P3DMaterialSaver
*Material,
P3DMaterialDef *MaterialDef) const;
void ProcessTexture (P3DMaterialDef *MaterialDef,
unsigned int TexLayer,
const char *TexName,
const char *FileName) const;

Expand Down Expand Up @@ -416,29 +417,36 @@ void NGAMaterialSaver::ProcessTextures

if (FileName != 0)
{
ProcessTexture(MaterialDef,TexName,FileName);
ProcessTexture(MaterialDef,LayerIndex,TexName,FileName);
}
}
}
}

void NGAMaterialSaver::ProcessTexture
(P3DMaterialDef *MaterialDef,
unsigned int TexLayer,
const char *TexName,
const char *FileName) const
{
std::string NGATexName = TexName2NGATexName(TexName);
TextureBindings::const_iterator Entry = Textures.find(NGATexName);
std::string FileNameStr(FileName);

if (Entry == Textures.end() || Entry->second == FileNameStr)
if (Entry == Textures.end())
{
Textures[NGATexName] = FileNameStr;
}
else if (Entry->second == FileNameStr)
{
// Textures array already contains this texture
}
else
{
throw P3DExceptionGeneric(".NGA doesn't support several textures with the same base name");
}

MaterialDef->SetTexName(TexLayer,P3DPathName::BaseName(TexName).c_str());
}

std::string NGAMaterialSaver::TexName2NGATexName
Expand Down

0 comments on commit 8fb1fe4

Please sign in to comment.