Merge branch 'master' into fix-artifact
commit
d04dd1af9b
|
@ -55,6 +55,7 @@ const char NULL_RECORD[NumNullRecords] = { // 25 null bytes in 64-bit and 13 nul
|
||||||
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
|
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
|
||||||
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'
|
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'
|
||||||
}; // who knows why, it looks like two integers 32/64 bit (compressed and uncompressed sizes?) + 1 byte (might be compression type?)
|
}; // who knows why, it looks like two integers 32/64 bit (compressed and uncompressed sizes?) + 1 byte (might be compression type?)
|
||||||
|
static std::string NULL_RECORD_STRING(NumNullRecords, '\0');
|
||||||
const std::string SEPARATOR = { '\x00', '\x01' }; // for use inside strings
|
const std::string SEPARATOR = { '\x00', '\x01' }; // for use inside strings
|
||||||
const std::string MAGIC_NODE_TAG = "_$AssimpFbx$"; // from import
|
const std::string MAGIC_NODE_TAG = "_$AssimpFbx$"; // from import
|
||||||
const int64_t SECOND = 46186158000; // FBX's kTime unit
|
const int64_t SECOND = 46186158000; // FBX's kTime unit
|
||||||
|
|
|
@ -360,7 +360,7 @@ void FBX::Node::EndBinary(
|
||||||
bool has_children
|
bool has_children
|
||||||
) {
|
) {
|
||||||
// if there were children, add a null record
|
// if there were children, add a null record
|
||||||
if (has_children) { s.PutString(Assimp::FBX::NULL_RECORD); }
|
if (has_children) { s.PutString(Assimp::FBX::NULL_RECORD_STRING); }
|
||||||
|
|
||||||
// now go back and write initial pos
|
// now go back and write initial pos
|
||||||
this->end_pos = s.Tell();
|
this->end_pos = s.Tell();
|
||||||
|
|
|
@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
|
||||||
|
|
||||||
Copyright (c) 2006-2022, assimp team
|
Copyright (c) 2006-2022, assimp team
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
|
@ -117,6 +115,9 @@ void MD5Parser::ParseHeader() {
|
||||||
ReportError("MD5 version tag is unknown (10 is expected)");
|
ReportError("MD5 version tag is unknown (10 is expected)");
|
||||||
}
|
}
|
||||||
SkipLine();
|
SkipLine();
|
||||||
|
if (buffer == bufferEnd) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// print the command line options to the console
|
// print the command line options to the console
|
||||||
// FIX: can break the log length limit, so we need to be careful
|
// FIX: can break the log length limit, so we need to be careful
|
||||||
|
@ -135,8 +136,9 @@ bool MD5Parser::ParseSection(Section &out) {
|
||||||
|
|
||||||
// first parse the name of the section
|
// first parse the name of the section
|
||||||
char *sz = buffer;
|
char *sz = buffer;
|
||||||
while (!IsSpaceOrNewLine(*buffer))
|
while (!IsSpaceOrNewLine(*buffer)) {
|
||||||
buffer++;
|
++buffer;
|
||||||
|
}
|
||||||
out.mName = std::string(sz, (uintptr_t)(buffer - sz));
|
out.mName = std::string(sz, (uintptr_t)(buffer - sz));
|
||||||
SkipSpaces();
|
SkipSpaces();
|
||||||
|
|
||||||
|
@ -144,14 +146,14 @@ bool MD5Parser::ParseSection(Section &out) {
|
||||||
while (running) {
|
while (running) {
|
||||||
if ('{' == *buffer) {
|
if ('{' == *buffer) {
|
||||||
// it is a normal section so read all lines
|
// it is a normal section so read all lines
|
||||||
buffer++;
|
++buffer;
|
||||||
bool run = true;
|
bool run = true;
|
||||||
while (run) {
|
while (run) {
|
||||||
if (!SkipSpacesAndLineEnd()) {
|
if (!SkipSpacesAndLineEnd()) {
|
||||||
return false; // seems this was the last section
|
return false; // seems this was the last section
|
||||||
}
|
}
|
||||||
if ('}' == *buffer) {
|
if ('}' == *buffer) {
|
||||||
buffer++;
|
++buffer;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,7 +165,7 @@ bool MD5Parser::ParseSection(Section &out) {
|
||||||
|
|
||||||
// terminate the line with zero
|
// terminate the line with zero
|
||||||
while (!IsLineEnd(*buffer))
|
while (!IsLineEnd(*buffer))
|
||||||
buffer++;
|
++buffer;
|
||||||
if (*buffer) {
|
if (*buffer) {
|
||||||
++lineNumber;
|
++lineNumber;
|
||||||
*buffer++ = '\0';
|
*buffer++ = '\0';
|
||||||
|
|
|
@ -292,6 +292,7 @@ void OFFImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS
|
||||||
if(!idx || idx > 9) {
|
if(!idx || idx > 9) {
|
||||||
ASSIMP_LOG_ERROR("OFF: Faces with zero indices aren't allowed");
|
ASSIMP_LOG_ERROR("OFF: Faces with zero indices aren't allowed");
|
||||||
--mesh->mNumFaces;
|
--mesh->mNumFaces;
|
||||||
|
++i;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
faces->mNumIndices = idx;
|
faces->mNumIndices = idx;
|
||||||
|
|
|
@ -440,7 +440,7 @@ void ObjFileParser::getFace(aiPrimitiveType type) {
|
||||||
const bool vt = (!m_pModel->mTextureCoord.empty());
|
const bool vt = (!m_pModel->mTextureCoord.empty());
|
||||||
const bool vn = (!m_pModel->mNormals.empty());
|
const bool vn = (!m_pModel->mNormals.empty());
|
||||||
int iPos = 0;
|
int iPos = 0;
|
||||||
while (m_DataIt != m_DataItEnd) {
|
while (m_DataIt < m_DataItEnd) {
|
||||||
int iStep = 1;
|
int iStep = 1;
|
||||||
|
|
||||||
if (IsLineEnd(*m_DataIt)) {
|
if (IsLineEnd(*m_DataIt)) {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
Open Asset Import Library (assimp)
|
Open Asset Import Library (assimp)
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 2006-2021, assimp team
|
Copyright (c) 2006-2022, assimp team
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
|
@ -111,6 +111,10 @@ inline Char_T getNextToken(Char_T pBuffer, Char_T pEnd) {
|
||||||
*/
|
*/
|
||||||
template <class char_t>
|
template <class char_t>
|
||||||
inline char_t skipLine(char_t it, char_t end, unsigned int &uiLine) {
|
inline char_t skipLine(char_t it, char_t end, unsigned int &uiLine) {
|
||||||
|
if (it >= end) {
|
||||||
|
return it;
|
||||||
|
}
|
||||||
|
|
||||||
while (!isEndOfBuffer(it, end) && !IsLineEnd(*it)) {
|
while (!isEndOfBuffer(it, end) && !IsLineEnd(*it)) {
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,9 +97,12 @@ AI_FORCE_INLINE aiReturn aiMaterial::Get(const char* pKey,unsigned int type,
|
||||||
if (prop->mType != aiPTI_Buffer) {
|
if (prop->mType != aiPTI_Buffer) {
|
||||||
return AI_FAILURE;
|
return AI_FAILURE;
|
||||||
}
|
}
|
||||||
|
// std::min has in some cases a conflict with a defined min
|
||||||
|
#ifdef min
|
||||||
|
# undef min
|
||||||
|
#endif
|
||||||
iNum = static_cast<unsigned int>(std::min(static_cast<size_t>(iNum),prop->mDataLength / sizeof(Type)));
|
iNum = static_cast<unsigned int>(std::min(static_cast<size_t>(iNum),prop->mDataLength / sizeof(Type)));
|
||||||
::memcpy(pOut,prop->mData,iNum * sizeof(Type));
|
std::memcpy(pOut,prop->mData,iNum * sizeof(Type));
|
||||||
if (pMax) {
|
if (pMax) {
|
||||||
*pMax = iNum;
|
*pMax = iNum;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue