- Bugfix : Fix build of Obj-FileImporter ( this is currently only a work-around, loader is leaking memory, I am working on it ).

- Update : Merge fixes from GitHub, thanks to Riku Palomäki ( more fixes will merged soon ).

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@1213 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/5/head
kimmi 2012-03-20 20:31:14 +00:00
parent e65087c338
commit b724ac5c2c
3 changed files with 17 additions and 9 deletions

View File

@ -110,7 +110,8 @@ void BaseImporter::SetupProperties(const Importer* /*pImp*/)
const std::string& pFile,
const char** tokens,
unsigned int numTokens,
unsigned int searchBytes /* = 200 */)
unsigned int searchBytes /* = 200 */,
bool tokensSol /* false */)
{
ai_assert(NULL != tokens && 0 != numTokens && 0 != searchBytes);
if (!pIOHandler)
@ -142,7 +143,13 @@ void BaseImporter::SetupProperties(const Importer* /*pImp*/)
for (unsigned int i = 0; i < numTokens;++i) {
ai_assert(NULL != tokens[i]);
if (::strstr(buffer,tokens[i])) {
const char* r = strstr(buffer,tokens[i]);
if (!r)
continue;
// We got a match, either we don't care where it is, or it happens to
// be in the beginning of the file / line
if (!tokensSol || r == buffer || r[-1] == '\r' || r[-1] == '\n') {
DefaultLogger::get()->debug(std::string("Found positive match for header keyword: ") + tokens[i]);
return true;
}

View File

@ -271,8 +271,8 @@ public: // static utilities
const std::string& file,
const char** tokens,
unsigned int numTokens,
unsigned int searchBytes = 200);
unsigned int searchBytes = 200,
bool tokensSol = false);
// -------------------------------------------------------------------
/** @brief Check whether a file has a specific file extension

View File

@ -58,7 +58,7 @@ struct Material;
// ------------------------------------------------------------------------------------------------
//! \struct Face
//! \brief Datastructure for a simple obj-face, descripes discredisation and materials
//! \brief Data structure for a simple obj-face, describes discredit,l.ation and materials
struct Face
{
typedef std::vector<unsigned int> IndexArray;
@ -96,8 +96,10 @@ struct Face
{
delete m_pVertices;
m_pVertices = NULL;
delete m_pNormals;
m_pNormals = NULL;
delete m_pTexturCoords;
m_pTexturCoords = NULL;
}
@ -162,7 +164,7 @@ struct Material
aiColor3D ambient;
//! Diffuse color
aiColor3D diffuse;
//! Speculao color
//! Specular color
aiColor3D specular;
//! Alpha value
float alpha;
@ -228,7 +230,6 @@ struct Mesh
{
delete *it;
}
}
};
@ -259,7 +260,7 @@ struct Model
std::vector<aiVector3D> m_Vertices;
//! vector with all generated normals
std::vector<aiVector3D> m_Normals;
//! Groupmap
//! Group map
GroupMap m_Groups;
//! Group to face id assignment
std::vector<unsigned int> *m_pGroupFaceIDs;
@ -309,7 +310,7 @@ struct Model
m_Groups.clear();
for ( std::map<std::string, Material*>::iterator it = m_MaterialMap.begin(); it != m_MaterialMap.end(); ++it ) {
delete it->second;
// delete it->second;
}
}
};