diff --git a/code/AssbinExporter.cpp b/code/AssbinExporter.cpp index 4a19147ac..e97f27a8a 100644 --- a/code/AssbinExporter.cpp +++ b/code/AssbinExporter.cpp @@ -350,27 +350,32 @@ inline size_t WriteArray(IOStream * stream, const T* in, unsigned int size) Write(&chunk, type); switch (type) { - case AI_BOOL: - Write(&chunk, *((bool*) value)); - break; - case AI_INT32: - Write(&chunk, *((int32_t*) value)); - break; - case AI_UINT64: - Write(&chunk, *((uint64_t*) value)); - break; - case AI_FLOAT: - Write(&chunk, *((float*) value)); - break; - case AI_DOUBLE: - Write(&chunk, *((double*) value)); - break; - case AI_AISTRING: - Write(&chunk, *((aiString*) value)); - break; - case AI_AIVECTOR3D: - Write(&chunk, *((aiVector3D*) value)); - break; + case AI_BOOL: + Write(&chunk, *((bool*) value)); + break; + case AI_INT32: + Write(&chunk, *((int32_t*) value)); + break; + case AI_UINT64: + Write(&chunk, *((uint64_t*) value)); + break; + case AI_FLOAT: + Write(&chunk, *((float*) value)); + break; + case AI_DOUBLE: + Write(&chunk, *((double*) value)); + break; + case AI_AISTRING: + Write(&chunk, *((aiString*) value)); + break; + case AI_AIVECTOR3D: + Write(&chunk, *((aiVector3D*) value)); + break; +#ifdef SWIG + case FORCE_32BIT: +#endif // SWIG + default: + break; } } } diff --git a/code/AssbinLoader.cpp b/code/AssbinLoader.cpp index 218d8f53a..f418638e1 100644 --- a/code/AssbinLoader.cpp +++ b/code/AssbinLoader.cpp @@ -198,8 +198,7 @@ template void ReadBounds( IOStream * stream, T* /*p*/, unsigned int stream->Seek( sizeof(T) * n, aiOrigin_CUR ); } -void AssbinImporter::ReadBinaryNode( IOStream * stream, aiNode** node, aiNode* parent ) -{ +void AssbinImporter::ReadBinaryNode( IOStream * stream, aiNode** node, aiNode* parent ) { uint32_t chunkID = Read(stream); ai_assert(chunkID == ASSBIN_CHUNK_AINODE); /*uint32_t size =*/ Read(stream); @@ -212,58 +211,59 @@ void AssbinImporter::ReadBinaryNode( IOStream * stream, aiNode** node, aiNode* p (*node)->mNumMeshes = Read(stream); unsigned int nb_metadata = Read(stream); - if(parent) - { + if(parent) { (*node)->mParent = parent; } - if ((*node)->mNumMeshes) - { + if ((*node)->mNumMeshes) { (*node)->mMeshes = new unsigned int[(*node)->mNumMeshes]; for (unsigned int i = 0; i < (*node)->mNumMeshes; ++i) { (*node)->mMeshes[i] = Read(stream); } } - if ((*node)->mNumChildren) - { + if ((*node)->mNumChildren) { (*node)->mChildren = new aiNode*[(*node)->mNumChildren]; for (unsigned int i = 0; i < (*node)->mNumChildren; ++i) { ReadBinaryNode( stream, &(*node)->mChildren[i], *node ); } } - if (nb_metadata) - { - (*node)->mMetaData = aiMetadata::Alloc(nb_metadata); - for (unsigned int i = 0; i < nb_metadata; ++i) { - (*node)->mMetaData->mKeys[i] = Read(stream); - (*node)->mMetaData->mValues[i].mType = (aiMetadataType) Read(stream); - void* data = NULL; + if ( nb_metadata > 0 ) { + (*node)->mMetaData = aiMetadata::Alloc(nb_metadata); + for (unsigned int i = 0; i < nb_metadata; ++i) { + (*node)->mMetaData->mKeys[i] = Read(stream); + (*node)->mMetaData->mValues[i].mType = (aiMetadataType) Read(stream); + void* data( nullptr ); - switch ((*node)->mMetaData->mValues[i].mType) { - case AI_BOOL: - data = new bool(Read(stream)); - break; - case AI_INT32: - data = new int32_t(Read(stream)); - break; - case AI_UINT64: - data = new uint64_t(Read(stream)); - break; - case AI_FLOAT: - data = new float(Read(stream)); - break; - case AI_DOUBLE: - data = new double(Read(stream)); - break; - case AI_AISTRING: - data = new aiString(Read(stream)); - break; - case AI_AIVECTOR3D: - data = new aiVector3D(Read(stream)); - break; - } + switch ((*node)->mMetaData->mValues[i].mType) { + case AI_BOOL: + data = new bool(Read(stream)); + break; + case AI_INT32: + data = new int32_t(Read(stream)); + break; + case AI_UINT64: + data = new uint64_t(Read(stream)); + break; + case AI_FLOAT: + data = new float(Read(stream)); + break; + case AI_DOUBLE: + data = new double(Read(stream)); + break; + case AI_AISTRING: + data = new aiString(Read(stream)); + break; + case AI_AIVECTOR3D: + data = new aiVector3D(Read(stream)); + break; +#ifndef SWIG + case FORCE_32BIT: +#endif // SWIG + default: + break; + } (*node)->mMetaData->mValues[i].mData = data; }