Merge branch 'master' into issue_4349
commit
4457d9300a
|
@ -122,15 +122,15 @@ voidpf IOSystem2Unzip::open(voidpf opaque, const char *filename, int mode) {
|
|||
voidpf IOSystem2Unzip::opendisk(voidpf opaque, voidpf stream, uint32_t number_disk, int mode) {
|
||||
ZipFile *io_stream = (ZipFile *)stream;
|
||||
voidpf ret = NULL;
|
||||
size_t i;
|
||||
int i;
|
||||
|
||||
char *disk_filename = (char*)malloc(io_stream->m_Filename.length() + 1);
|
||||
strncpy(disk_filename, io_stream->m_Filename.c_str(), io_stream->m_Filename.length() + 1);
|
||||
for (i = io_stream->m_Filename.length() - 1; i >= 0; i -= 1)
|
||||
for (i = (int)io_stream->m_Filename.length() - 1; i >= 0; i -= 1)
|
||||
{
|
||||
if (disk_filename[i] != '.')
|
||||
continue;
|
||||
snprintf(&disk_filename[i], io_stream->m_Filename.length() - i, ".z%02u", number_disk + 1);
|
||||
snprintf(&disk_filename[i], io_stream->m_Filename.length() - size_t(i), ".z%02u", number_disk + 1);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -331,7 +331,7 @@ enum aiTextureType {
|
|||
#endif
|
||||
};
|
||||
|
||||
#define AI_TEXTURE_TYPE_MAX aiTextureType_UNKNOWN
|
||||
#define AI_TEXTURE_TYPE_MAX aiTextureType_TRANSMISSION
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
// Get a string for a given aiTextureType
|
||||
|
|
|
@ -216,3 +216,63 @@ TEST_F(MaterialSystemTest, testCastSmallFloatProperty) {
|
|||
EXPECT_EQ(AI_SUCCESS, pcMat->Get("zero", 0, 0, valBool));
|
||||
EXPECT_EQ(false, valBool);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
#if defined(_MSC_VER)
|
||||
// Refuse to compile on Windows if any enum values are not explicitly handled in the switch
|
||||
// TODO: Move this into assimp/Compiler as a macro and add clang/gcc versions so other code can use it
|
||||
__pragma(warning(push));
|
||||
__pragma(warning(error : 4061)); // enumerator 'identifier' in switch of enum 'enumeration' is not explicitly handled by a case label
|
||||
__pragma(warning(error : 4062)); // enumerator 'identifier' in switch of enum 'enumeration' is not handled
|
||||
#endif
|
||||
|
||||
TEST_F(MaterialSystemTest, testMaterialTextureTypeEnum) {
|
||||
// Verify that AI_TEXTURE_TYPE_MAX equals the largest 'real' value in the enum
|
||||
|
||||
int32_t maxTextureType = 0;
|
||||
static constexpr int32_t bigNumber = 255;
|
||||
EXPECT_GT(bigNumber, AI_TEXTURE_TYPE_MAX) << "AI_TEXTURE_TYPE_MAX too large for valid enum test, increase bigNumber";
|
||||
|
||||
// Loop until a value larger than any enum
|
||||
for (int32_t i = 0; i < bigNumber; ++i) {
|
||||
aiTextureType texType = static_cast<aiTextureType>(i);
|
||||
switch (texType) {
|
||||
default: break;
|
||||
#ifndef SWIG
|
||||
case _aiTextureType_Force32Bit: break;
|
||||
#endif
|
||||
// All the real values
|
||||
case aiTextureType_NONE:
|
||||
case aiTextureType_DIFFUSE:
|
||||
case aiTextureType_SPECULAR:
|
||||
case aiTextureType_AMBIENT:
|
||||
case aiTextureType_EMISSIVE:
|
||||
case aiTextureType_HEIGHT:
|
||||
case aiTextureType_NORMALS:
|
||||
case aiTextureType_SHININESS:
|
||||
case aiTextureType_OPACITY:
|
||||
case aiTextureType_DISPLACEMENT:
|
||||
case aiTextureType_LIGHTMAP:
|
||||
case aiTextureType_REFLECTION:
|
||||
case aiTextureType_BASE_COLOR:
|
||||
case aiTextureType_NORMAL_CAMERA:
|
||||
case aiTextureType_EMISSION_COLOR:
|
||||
case aiTextureType_METALNESS:
|
||||
case aiTextureType_DIFFUSE_ROUGHNESS:
|
||||
case aiTextureType_AMBIENT_OCCLUSION:
|
||||
case aiTextureType_SHEEN:
|
||||
case aiTextureType_CLEARCOAT:
|
||||
case aiTextureType_TRANSMISSION:
|
||||
case aiTextureType_UNKNOWN:
|
||||
if (i > maxTextureType)
|
||||
maxTextureType = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
EXPECT_EQ(maxTextureType, AI_TEXTURE_TYPE_MAX) << "AI_TEXTURE_TYPE_MAX macro must be equal to the largest valid aiTextureType_XXX";
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
__pragma (warning(pop))
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue