Skip to content

Commit

Permalink
Bugfix : Changed ColladaParser to be non-const in ColladaLoader::Buil…
Browse files Browse the repository at this point in the history
…dMaterials. ( merged from GitHub, thanks to Riku Palomäki ).

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@1229 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
  • Loading branch information
kimmi committed Mar 21, 2012
1 parent 0e5ae51 commit 6caf98d
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
8 changes: 4 additions & 4 deletions code/ColladaLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1275,18 +1275,18 @@ void ColladaLoader::FillMaterials( const ColladaParser& pParser, aiScene* /*pSce

// ------------------------------------------------------------------------------------------------
// Constructs materials from the collada material definitions
void ColladaLoader::BuildMaterials( const ColladaParser& pParser, aiScene* /*pScene*/)
void ColladaLoader::BuildMaterials( ColladaParser& pParser, aiScene* /*pScene*/)
{
newMats.reserve(pParser.mMaterialLibrary.size());

for( ColladaParser::MaterialLibrary::const_iterator matIt = pParser.mMaterialLibrary.begin(); matIt != pParser.mMaterialLibrary.end(); ++matIt)
{
const Collada::Material& material = matIt->second;
// a material is only a reference to an effect
ColladaParser::EffectLibrary::const_iterator effIt = pParser.mEffectLibrary.find( material.mEffect);
ColladaParser::EffectLibrary::iterator effIt = pParser.mEffectLibrary.find( material.mEffect);
if( effIt == pParser.mEffectLibrary.end())
continue;
const Collada::Effect& effect = effIt->second;
Collada::Effect& effect = effIt->second;

// create material
aiMaterial* mat = new aiMaterial;
Expand All @@ -1295,7 +1295,7 @@ void ColladaLoader::BuildMaterials( const ColladaParser& pParser, aiScene* /*pSc

// store the material
mMaterialIndexByName[matIt->first] = newMats.size();
newMats.push_back( std::pair<Collada::Effect*, aiMaterial*>(const_cast<Collada::Effect*>(&effect),mat) );
newMats.push_back( std::pair<Collada::Effect*, aiMaterial*>( &effect,mat) );
}
// ScenePreprocessor generates a default material automatically if none is there.
// All further code here in this loader works well without a valid material so
Expand Down
2 changes: 1 addition & 1 deletion code/ColladaLoader.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ class ColladaLoader : public BaseImporter
void CreateAnimation( aiScene* pScene, const ColladaParser& pParser, const Collada::Animation* pSrcAnim, const std::string& pName);

/** Constructs materials from the collada material definitions */
void BuildMaterials( const ColladaParser& pParser, aiScene* pScene);
void BuildMaterials( ColladaParser& pParser, aiScene* pScene);

/** Fill materials from the collada material definitions */
void FillMaterials( const ColladaParser& pParser, aiScene* pScene);
Expand Down

0 comments on commit 6caf98d

Please sign in to comment.