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) {
|
voidpf IOSystem2Unzip::opendisk(voidpf opaque, voidpf stream, uint32_t number_disk, int mode) {
|
||||||
ZipFile *io_stream = (ZipFile *)stream;
|
ZipFile *io_stream = (ZipFile *)stream;
|
||||||
voidpf ret = NULL;
|
voidpf ret = NULL;
|
||||||
size_t i;
|
int i;
|
||||||
|
|
||||||
char *disk_filename = (char*)malloc(io_stream->m_Filename.length() + 1);
|
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);
|
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] != '.')
|
if (disk_filename[i] != '.')
|
||||||
continue;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -331,7 +331,7 @@ enum aiTextureType {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#define AI_TEXTURE_TYPE_MAX aiTextureType_UNKNOWN
|
#define AI_TEXTURE_TYPE_MAX aiTextureType_TRANSMISSION
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------
|
||||||
// Get a string for a given aiTextureType
|
// 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(AI_SUCCESS, pcMat->Get("zero", 0, 0, valBool));
|
||||||
EXPECT_EQ(false, 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