Merge branch 'master' into select_exporters
commit
22f4667932
|
@ -708,7 +708,7 @@ void AssbinImporter::InternReadFile( const std::string& pFile, aiScene* pScene,
|
|||
|
||||
unsigned char * uncompressedData = new unsigned char[ uncompressedSize ];
|
||||
|
||||
int res = uncompress( uncompressedData, &uncompressedSize, compressedData, len );
|
||||
int res = uncompress( uncompressedData, &uncompressedSize, compressedData, (uLong) len );
|
||||
if(res != Z_OK)
|
||||
{
|
||||
delete [] uncompressedData;
|
||||
|
|
|
@ -964,7 +964,7 @@ namespace Assimp {
|
|||
{
|
||||
if (indices[i] < 0) epcount++;
|
||||
}
|
||||
unsigned int pcount = indices.size();
|
||||
unsigned int pcount = static_cast<unsigned int>( indices.size() );
|
||||
unsigned int scount = out_mesh->mNumFaces = pcount - epcount;
|
||||
|
||||
aiFace* fac = out_mesh->mFaces = new aiFace[scount]();
|
||||
|
|
|
@ -178,30 +178,30 @@ void FindInstancesProcess::Execute( aiScene* pScene)
|
|||
// use a constant epsilon for colors and UV coordinates
|
||||
static const float uvEpsilon = 10e-4f;
|
||||
{
|
||||
unsigned int i, end = orig->GetNumUVChannels();
|
||||
for(i = 0; i < end; ++i) {
|
||||
if (!orig->mTextureCoords[i]) {
|
||||
unsigned int j, end = orig->GetNumUVChannels();
|
||||
for(j = 0; j < end; ++j) {
|
||||
if (!orig->mTextureCoords[j]) {
|
||||
continue;
|
||||
}
|
||||
if(!CompareArrays(orig->mTextureCoords[i],inst->mTextureCoords[i],orig->mNumVertices,uvEpsilon)) {
|
||||
if(!CompareArrays(orig->mTextureCoords[j],inst->mTextureCoords[j],orig->mNumVertices,uvEpsilon)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i != end) {
|
||||
if (j != end) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
{
|
||||
unsigned int i, end = orig->GetNumColorChannels();
|
||||
for(i = 0; i < end; ++i) {
|
||||
if (!orig->mColors[i]) {
|
||||
unsigned int j, end = orig->GetNumColorChannels();
|
||||
for(j = 0; j < end; ++j) {
|
||||
if (!orig->mColors[j]) {
|
||||
continue;
|
||||
}
|
||||
if(!CompareArrays(orig->mColors[i],inst->mColors[i],orig->mNumVertices,uvEpsilon)) {
|
||||
if(!CompareArrays(orig->mColors[j],inst->mColors[j],orig->mNumVertices,uvEpsilon)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i != end) {
|
||||
if (j != end) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,7 +112,9 @@ void ImproveCacheLocalityProcess::Execute( aiScene* pScene)
|
|||
}
|
||||
}
|
||||
if (!DefaultLogger::isNullLogger()) {
|
||||
ASSIMP_LOG_INFO_F("Cache relevant are ", numm, " meshes (", numf," faces). Average output ACMR is ", out / numf );
|
||||
if (numf > 0) {
|
||||
ASSIMP_LOG_INFO_F("Cache relevant are ", numm, " meshes (", numf, " faces). Average output ACMR is ", out / numf);
|
||||
}
|
||||
ASSIMP_LOG_DEBUG("ImproveCacheLocalityProcess finished. ");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
#include <assimp/Compiler/pushpack1.h>
|
||||
|
||||
namespace Assimp {
|
||||
namespace Assimp {
|
||||
namespace MD3 {
|
||||
|
||||
// to make it easier for us, we test the magic word against both "endianesses"
|
||||
|
@ -303,12 +303,12 @@ inline void Vec3NormalToLatLng( const aiVector3D& p_vIn, uint16_t& p_iOut )
|
|||
b = int(57.2957795f * ( std::acos( p_vIn[2] ) ) * ( 255.0f / 360.0f ));
|
||||
b &= 0xff;
|
||||
|
||||
((unsigned char*)&p_iOut)[0] = b; // longitude
|
||||
((unsigned char*)&p_iOut)[1] = a; // latitude
|
||||
((unsigned char*)&p_iOut)[0] = (unsigned char) b; // longitude
|
||||
((unsigned char*)&p_iOut)[1] = (unsigned char) a; // latitude
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} // Namespace MD3
|
||||
} // Namespace Assimp
|
||||
|
||||
#endif // !! AI_MD3FILEHELPER_H_INC
|
||||
|
|
|
@ -258,10 +258,10 @@ bool Q3Shader::LoadSkin(SkinData& fill, const std::string& pFile,IOSystem* io)
|
|||
continue;
|
||||
|
||||
fill.textures.push_back(SkinData::TextureEntry());
|
||||
SkinData::TextureEntry& s = fill.textures.back();
|
||||
SkinData::TextureEntry &entry = fill.textures.back();
|
||||
|
||||
s.first = ss;
|
||||
s.second = GetNextToken(buff);
|
||||
entry.first = ss;
|
||||
entry.second = GetNextToken(buff);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -718,9 +718,7 @@ void MD3Importer::ConvertPath(const char* texture_name, const char* header_name,
|
|||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Imports the given file into the given scene structure.
|
||||
void MD3Importer::InternReadFile( const std::string& pFile,
|
||||
aiScene* pScene, IOSystem* pIOHandler)
|
||||
{
|
||||
void MD3Importer::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) {
|
||||
mFile = pFile;
|
||||
mScene = pScene;
|
||||
mIOHandler = pIOHandler;
|
||||
|
@ -730,11 +728,13 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
|||
std::string::size_type s = mFile.find_last_of("/\\");
|
||||
if (s == std::string::npos) {
|
||||
s = 0;
|
||||
} else {
|
||||
++s;
|
||||
}
|
||||
filename = mFile.substr(s), path = mFile.substr(0, s);
|
||||
for (std::string::iterator it = filename.begin(); it != filename.end(); ++it) {
|
||||
*it = static_cast<char>( tolower(*it) );
|
||||
}
|
||||
else ++s;
|
||||
filename = mFile.substr(s), path = mFile.substr(0,s);
|
||||
for( std::string::iterator it = filename .begin(); it != filename.end(); ++it)
|
||||
*it = tolower( *it);
|
||||
|
||||
// Load multi-part model file, if necessary
|
||||
if (configHandleMP) {
|
||||
|
@ -905,15 +905,15 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
|||
// Now search the current shader for a record with this name (
|
||||
// excluding texture file extension)
|
||||
if (!shaders.blocks.empty()) {
|
||||
std::string::size_type sh = convertedPath.find_last_of('.');
|
||||
if (sh == std::string::npos) {
|
||||
sh = convertedPath.length();
|
||||
}
|
||||
|
||||
std::string::size_type s = convertedPath.find_last_of('.');
|
||||
if (s == std::string::npos)
|
||||
s = convertedPath.length();
|
||||
|
||||
const std::string without_ext = convertedPath.substr(0,s);
|
||||
const std::string without_ext = convertedPath.substr(0,sh);
|
||||
std::list< Q3Shader::ShaderDataBlock >::const_iterator dit = std::find(shaders.blocks.begin(),shaders.blocks.end(),without_ext);
|
||||
if (dit != shaders.blocks.end()) {
|
||||
// Hurra, wir haben einen. Tolle Sache.
|
||||
// We made it!
|
||||
shader = &*dit;
|
||||
ASSIMP_LOG_INFO("Found shader record for " +without_ext );
|
||||
} else {
|
||||
|
@ -945,8 +945,7 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
|||
aiString szString;
|
||||
if (convertedPath.length()) {
|
||||
szString.Set(convertedPath);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ASSIMP_LOG_WARN("Texture file name has zero length. Using default name");
|
||||
szString.Set("dummy_texture.bmp");
|
||||
}
|
||||
|
@ -955,8 +954,7 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
|||
// prevent transparency by default
|
||||
int no_alpha = aiTextureFlags_IgnoreAlpha;
|
||||
pcHelper->AddProperty(&no_alpha,1,AI_MATKEY_TEXFLAGS_DIFFUSE(0));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
Q3Shader::ConvertShaderToMaterial(pcHelper,*shader);
|
||||
}
|
||||
|
||||
|
@ -1026,7 +1024,7 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
|||
if (!shader || shader->cull == Q3Shader::CULL_CW) {
|
||||
std::swap(pcMesh->mFaces[i].mIndices[2],pcMesh->mFaces[i].mIndices[1]);
|
||||
}
|
||||
pcTriangles++;
|
||||
++pcTriangles;
|
||||
}
|
||||
|
||||
// Go to the next surface
|
||||
|
@ -1042,8 +1040,9 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
|||
}
|
||||
}
|
||||
|
||||
if (!pScene->mNumMeshes)
|
||||
if (!pScene->mNumMeshes) {
|
||||
throw DeadlyImportError( "MD3: File contains no valid mesh");
|
||||
}
|
||||
pScene->mNumMaterials = iNumMaterials;
|
||||
|
||||
// Now we need to generate an empty node graph
|
||||
|
@ -1057,7 +1056,6 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
|||
pScene->mRootNode->mChildren = new aiNode*[pcHeader->NUM_TAGS];
|
||||
|
||||
for (unsigned int i = 0; i < pcHeader->NUM_TAGS; ++i, ++pcTags) {
|
||||
|
||||
aiNode* nd = pScene->mRootNode->mChildren[i] = new aiNode();
|
||||
nd->mName.Set((const char*)pcTags->NAME);
|
||||
nd->mParent = pScene->mRootNode;
|
||||
|
@ -1085,8 +1083,12 @@ void MD3Importer::InternReadFile( const std::string& pFile,
|
|||
pScene->mRootNode->mMeshes[i] = i;
|
||||
|
||||
// Now rotate the whole scene 90 degrees around the x axis to convert to internal coordinate system
|
||||
pScene->mRootNode->mTransformation = aiMatrix4x4(1.f,0.f,0.f,0.f,
|
||||
0.f,0.f,1.f,0.f,0.f,-1.f,0.f,0.f,0.f,0.f,0.f,1.f);
|
||||
pScene->mRootNode->mTransformation = aiMatrix4x4(
|
||||
1.f,0.f,0.f,0.f,
|
||||
0.f,0.f,1.f,0.f,
|
||||
0.f,-1.f,0.f,0.f,
|
||||
0.f,0.f,0.f,1.f
|
||||
);
|
||||
}
|
||||
|
||||
#endif // !! ASSIMP_BUILD_NO_MD3_IMPORTER
|
||||
|
|
|
@ -486,7 +486,7 @@ void SMDImporter::CreateOutputAnimations(const std::string &pFile, IOSystem* pIO
|
|||
if (bLoadAnimationList) {
|
||||
GetAnimationFileList(pFile, pIOHandler, animFileList);
|
||||
}
|
||||
int animCount = animFileList.size() + 1;
|
||||
int animCount = static_cast<int>( animFileList.size() + 1u );
|
||||
pScene->mNumAnimations = 1;
|
||||
pScene->mAnimations = new aiAnimation*[animCount];
|
||||
memset(pScene->mAnimations, 0, sizeof(aiAnimation*)*animCount);
|
||||
|
@ -510,7 +510,7 @@ void SMDImporter::CreateOutputAnimation(int index, const std::string &name) {
|
|||
anim->mName.Set(name.c_str());
|
||||
}
|
||||
anim->mDuration = dLengthOfAnim;
|
||||
anim->mNumChannels = asBones.size();
|
||||
anim->mNumChannels = static_cast<unsigned int>( asBones.size() );
|
||||
anim->mTicksPerSecond = 25.0; // FIXME: is this correct?
|
||||
|
||||
aiNodeAnim** pp = anim->mChannels = new aiNodeAnim*[anim->mNumChannels];
|
||||
|
|
|
@ -228,36 +228,37 @@ void SortByPTypeProcess::Execute( aiScene* pScene) {
|
|||
|
||||
out->mNumVertices = (3 == real ? numPolyVerts : out->mNumFaces * (real+1));
|
||||
|
||||
aiVector3D *vert(NULL), *nor(NULL), *tan(NULL), *bit(NULL);
|
||||
aiVector3D *vert(nullptr), *nor(nullptr), *tan(nullptr), *bit(nullptr);
|
||||
aiVector3D *uv [AI_MAX_NUMBER_OF_TEXTURECOORDS];
|
||||
aiColor4D *cols [AI_MAX_NUMBER_OF_COLOR_SETS];
|
||||
|
||||
if (mesh->mVertices)
|
||||
if (mesh->mVertices) {
|
||||
vert = out->mVertices = new aiVector3D[out->mNumVertices];
|
||||
}
|
||||
|
||||
if (mesh->mNormals)
|
||||
nor = out->mNormals = new aiVector3D[out->mNumVertices];
|
||||
if (mesh->mNormals) {
|
||||
nor = out->mNormals = new aiVector3D[out->mNumVertices];
|
||||
}
|
||||
|
||||
if (mesh->mTangents)
|
||||
{
|
||||
if (mesh->mTangents) {
|
||||
tan = out->mTangents = new aiVector3D[out->mNumVertices];
|
||||
bit = out->mBitangents = new aiVector3D[out->mNumVertices];
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS;++i)
|
||||
{
|
||||
if (mesh->mTextureCoords[i])
|
||||
uv[i] = out->mTextureCoords[i] = new aiVector3D[out->mNumVertices];
|
||||
else uv[i] = NULL;
|
||||
for (unsigned int j = 0; j < AI_MAX_NUMBER_OF_TEXTURECOORDS;++j) {
|
||||
uv[j] = nullptr;
|
||||
if (mesh->mTextureCoords[j]) {
|
||||
uv[j] = out->mTextureCoords[j] = new aiVector3D[out->mNumVertices];
|
||||
}
|
||||
|
||||
out->mNumUVComponents[i] = mesh->mNumUVComponents[i];
|
||||
out->mNumUVComponents[j] = mesh->mNumUVComponents[j];
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS;++i)
|
||||
{
|
||||
if (mesh->mColors[i])
|
||||
cols[i] = out->mColors[i] = new aiColor4D[out->mNumVertices];
|
||||
else cols[i] = NULL;
|
||||
for (unsigned int j = 0; j < AI_MAX_NUMBER_OF_COLOR_SETS;++j) {
|
||||
cols[j] = nullptr;
|
||||
if (mesh->mColors[j]) {
|
||||
cols[j] = out->mColors[j] = new aiColor4D[out->mNumVertices];
|
||||
}
|
||||
}
|
||||
|
||||
typedef std::vector< aiVertexWeight > TempBoneInfo;
|
||||
|
@ -323,7 +324,7 @@ void SortByPTypeProcess::Execute( aiScene* pScene) {
|
|||
in.mIndices[q] = outIdx++;
|
||||
}
|
||||
|
||||
in.mIndices = NULL;
|
||||
in.mIndices = nullptr;
|
||||
++outFaces;
|
||||
}
|
||||
ai_assert(outFaces == out->mFaces + out->mNumFaces);
|
||||
|
|
|
@ -127,35 +127,35 @@ aiMesh* StandardShapes::MakeMesh(const std::vector<aiVector3D>& positions,
|
|||
|
||||
// Determine which kinds of primitives the mesh consists of
|
||||
aiMesh* out = new aiMesh();
|
||||
switch (numIndices)
|
||||
{
|
||||
case 1:
|
||||
out->mPrimitiveTypes = aiPrimitiveType_POINT;
|
||||
break;
|
||||
case 2:
|
||||
out->mPrimitiveTypes = aiPrimitiveType_LINE;
|
||||
break;
|
||||
case 3:
|
||||
out->mPrimitiveTypes = aiPrimitiveType_TRIANGLE;
|
||||
break;
|
||||
default:
|
||||
out->mPrimitiveTypes = aiPrimitiveType_POLYGON;
|
||||
break;
|
||||
switch (numIndices) {
|
||||
case 1:
|
||||
out->mPrimitiveTypes = aiPrimitiveType_POINT;
|
||||
break;
|
||||
case 2:
|
||||
out->mPrimitiveTypes = aiPrimitiveType_LINE;
|
||||
break;
|
||||
case 3:
|
||||
out->mPrimitiveTypes = aiPrimitiveType_TRIANGLE;
|
||||
break;
|
||||
default:
|
||||
out->mPrimitiveTypes = aiPrimitiveType_POLYGON;
|
||||
break;
|
||||
};
|
||||
|
||||
out->mNumFaces = (unsigned int)positions.size() / numIndices;
|
||||
out->mFaces = new aiFace[out->mNumFaces];
|
||||
for (unsigned int i = 0, a = 0; i < out->mNumFaces;++i)
|
||||
{
|
||||
for (unsigned int i = 0, a = 0; i < out->mNumFaces;++i) {
|
||||
aiFace& f = out->mFaces[i];
|
||||
f.mNumIndices = numIndices;
|
||||
f.mIndices = new unsigned int[numIndices];
|
||||
for (unsigned int i = 0; i < numIndices;++i,++a)
|
||||
f.mIndices[i] = a;
|
||||
for (unsigned int j = 0; i < numIndices; ++i, ++a) {
|
||||
f.mIndices[j] = a;
|
||||
}
|
||||
}
|
||||
out->mNumVertices = (unsigned int)positions.size();
|
||||
out->mVertices = new aiVector3D[out->mNumVertices];
|
||||
::memcpy(out->mVertices,&positions[0],out->mNumVertices*sizeof(aiVector3D));
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
@ -466,8 +466,8 @@ void StandardShapes::MakeCone(ai_real height,ai_real radius1,
|
|||
|
||||
// Need to flip face order?
|
||||
if ( SIZE_MAX != old ) {
|
||||
for (size_t s = old; s < positions.size();s += 3) {
|
||||
std::swap(positions[s],positions[s+1]);
|
||||
for (size_t p = old; p < positions.size();p += 3) {
|
||||
std::swap(positions[p],positions[p+1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -582,15 +582,16 @@ void ValidateDSProcess::SearchForInvalidTextures(const aiMaterial* pMaterial,
|
|||
|
||||
int iNumIndices = 0;
|
||||
int iIndex = -1;
|
||||
for (unsigned int i = 0; i < pMaterial->mNumProperties;++i)
|
||||
{
|
||||
aiMaterialProperty* prop = pMaterial->mProperties[i];
|
||||
if (!::strcmp(prop->mKey.data,"$tex.file") && prop->mSemantic == type) {
|
||||
for (unsigned int i = 0; i < pMaterial->mNumProperties;++i) {
|
||||
aiMaterialProperty* prop = pMaterial->mProperties[ i ];
|
||||
ai_assert(nullptr != prop);
|
||||
if ( !::strcmp(prop->mKey.data,"$tex.file") && prop->mSemantic == static_cast<unsigned int>(type)) {
|
||||
iIndex = std::max(iIndex, (int) prop->mIndex);
|
||||
++iNumIndices;
|
||||
|
||||
if (aiPTI_String != prop->mType)
|
||||
ReportError("Material property %s is expected to be a string",prop->mKey.data);
|
||||
if (aiPTI_String != prop->mType) {
|
||||
ReportError("Material property %s is expected to be a string", prop->mKey.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (iIndex +1 != iNumIndices) {
|
||||
|
|
|
@ -152,10 +152,10 @@ TEST_F(utSTLImporterExporter, test_export_pointclouds) {
|
|||
|
||||
auto pMesh = scene.mMeshes[0];
|
||||
|
||||
long numValidPoints = points.size();
|
||||
size_t numValidPoints = points.size();
|
||||
|
||||
pMesh->mVertices = new aiVector3D[numValidPoints];
|
||||
pMesh->mNumVertices = numValidPoints;
|
||||
pMesh->mNumVertices = static_cast<unsigned int>( numValidPoints );
|
||||
|
||||
int i = 0;
|
||||
for (XYZ &p : points) {
|
||||
|
|
|
@ -51,27 +51,26 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include <string>
|
||||
|
||||
const char* AICMD_MSG_INFO_HELP_E =
|
||||
"assimp info <file> [-r] [-v]\n"
|
||||
"\tPrint basic structure of a 3D model\n"
|
||||
"\t-r,--raw: No postprocessing, do a raw import\n"
|
||||
"\t-v,--verbose: Print verbose info such as node transform data\n"
|
||||
"\t-s, --silent: Print only minimal info\n";
|
||||
"assimp info <file> [-r] [-v]\n"
|
||||
"\tPrint basic structure of a 3D model\n"
|
||||
"\t-r,--raw: No postprocessing, do a raw import\n"
|
||||
"\t-v,--verbose: Print verbose info such as node transform data\n"
|
||||
"\t-s, --silent: Print only minimal info\n";
|
||||
|
||||
const std::string TREE_BRANCH_ASCII = "|-";
|
||||
const std::string TREE_BRANCH_UTF8 = "\xe2\x94\x9c\xe2\x95\xb4";
|
||||
const std::string TREE_STOP_ASCII = "'-";
|
||||
const std::string TREE_STOP_UTF8 = "\xe2\x94\x94\xe2\x95\xb4";
|
||||
const std::string TREE_CONTINUE_ASCII = "| ";
|
||||
const std::string TREE_CONTINUE_UTF8 = "\xe2\x94\x82 ";
|
||||
const char *TREE_BRANCH_ASCII = "|-";
|
||||
const char *TREE_BRANCH_UTF8 = "\xe2\x94\x9c\xe2\x95\xb4";
|
||||
const char *TREE_STOP_ASCII = "'-";
|
||||
const char *TREE_STOP_UTF8 = "\xe2\x94\x94\xe2\x95\xb4";
|
||||
const char *TREE_CONTINUE_ASCII = "| ";
|
||||
const char *TREE_CONTINUE_UTF8 = "\xe2\x94\x82 ";
|
||||
|
||||
// note: by default this is outputing utf-8 text.
|
||||
// note: by default this is using utf-8 text.
|
||||
// this is well supported on pretty much any linux terminal.
|
||||
// if this causes problems on some platform,
|
||||
// put an #ifdef to use the ascii version for that platform.
|
||||
const std::string TREE_BRANCH = TREE_BRANCH_UTF8;
|
||||
const std::string TREE_STOP = TREE_STOP_UTF8;
|
||||
const std::string TREE_CONTINUE = TREE_CONTINUE_UTF8;
|
||||
|
||||
const char *TREE_BRANCH = TREE_BRANCH_UTF8;
|
||||
const char *TREE_STOP = TREE_STOP_UTF8;
|
||||
const char *TREE_CONTINUE = TREE_CONTINUE_UTF8;
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
unsigned int CountNodes(const aiNode* root)
|
||||
|
@ -280,14 +279,7 @@ void PrintHierarchy(
|
|||
|
||||
// -----------------------------------------------------------------------------------
|
||||
// Implementation of the assimp info utility to print basic file info
|
||||
int Assimp_Info (const char* const* params, unsigned int num)
|
||||
{
|
||||
if (num < 1) {
|
||||
printf("assimp info: Invalid number of arguments. "
|
||||
"See \'assimp info --help\'\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Assimp_Info (const char* const* params, unsigned int num) {
|
||||
// --help
|
||||
if (!strcmp( params[0],"-h")||!strcmp( params[0],"--help")||!strcmp( params[0],"-?") ) {
|
||||
printf("%s",AICMD_MSG_INFO_HELP_E);
|
||||
|
|
|
@ -276,9 +276,12 @@ inline uint32_t WriteBounds(const T* in, unsigned int size)
|
|||
void ChangeInteger(uint32_t ofs,uint32_t n)
|
||||
{
|
||||
const uint32_t cur = ftell(out);
|
||||
fseek(out,ofs,SEEK_SET);
|
||||
fwrite(&n,4,1,out);
|
||||
fseek(out,cur,SEEK_SET);
|
||||
int retCode;
|
||||
retCode = fseek(out, ofs, SEEK_SET);
|
||||
ai_assert(0 == retCode);
|
||||
fwrite(&n, 4, 1, out);
|
||||
retCode = fseek(out, cur, SEEK_SET);
|
||||
ai_assert(0 == retCode);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
@ -1333,10 +1336,6 @@ int Assimp_Dump (const char* const* params, unsigned int num)
|
|||
{
|
||||
const char* fail = "assimp dump: Invalid number of arguments. "
|
||||
"See \'assimp dump --help\'\r\n";
|
||||
if (num < 1) {
|
||||
printf("%s", fail);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// --help
|
||||
if (!strcmp( params[0], "-h") || !strcmp( params[0], "--help") || !strcmp( params[0], "-?") ) {
|
||||
|
|
|
@ -90,7 +90,7 @@ void SceneAnimator::SetAnimIndex( size_t pAnimIndex) {
|
|||
delete mAnimEvaluator; mAnimEvaluator = nullptr;
|
||||
mNodesByName.clear();
|
||||
|
||||
mCurrentAnimIndex = pAnimIndex;
|
||||
mCurrentAnimIndex = static_cast<int>( pAnimIndex );
|
||||
|
||||
// create the internal node tree. Do this even in case of invalid animation index
|
||||
// so that the transformation matrices are properly set up to mimic the current scene
|
||||
|
|
Loading…
Reference in New Issue