Fix T50227: Alembic uv export/load issue

Previously only a CD_MLOOPUV custom data layer was created. Now we also
create the accompanying CD_MTEXPOLY layer too.
This commit is contained in:
Sybren A. Stüvel
2017-04-12 16:33:40 +02:00
parent 6b815ae55d
commit 699a3e2498

View File

@@ -897,19 +897,31 @@ static void *add_customdata_cb(void *user_data, const char *name, int data_type)
{ {
DerivedMesh *dm = static_cast<DerivedMesh *>(user_data); DerivedMesh *dm = static_cast<DerivedMesh *>(user_data);
CustomDataType cd_data_type = static_cast<CustomDataType>(data_type); CustomDataType cd_data_type = static_cast<CustomDataType>(data_type);
void *cd_ptr = NULL; void *cd_ptr;
CustomData *loopdata;
int numloops;
if (ELEM(cd_data_type, CD_MLOOPUV, CD_MLOOPCOL)) { /* unsupported custom data type -- don't do anything. */
cd_ptr = CustomData_get_layer_named(dm->getLoopDataLayout(dm), cd_data_type, name); if (!ELEM(cd_data_type, CD_MLOOPUV, CD_MLOOPCOL)) {
return NULL;
}
if (cd_ptr == NULL) { loopdata = dm->getLoopDataLayout(dm);
cd_ptr = CustomData_add_layer_named(dm->getLoopDataLayout(dm), cd_ptr = CustomData_get_layer_named(loopdata, cd_data_type, name);
cd_data_type, if (cd_ptr != NULL) {
CD_DEFAULT, /* layer already exists, so just return it. */
NULL, return cd_ptr;
dm->getNumLoops(dm), }
name);
} /* create a new layer, taking care to construct the hopefully-soon-to-be-removed
* CD_MTEXPOLY layer too, with the same name. */
numloops = dm->getNumLoops(dm);
cd_ptr = CustomData_add_layer_named(loopdata, cd_data_type, CD_DEFAULT,
NULL, numloops, name);
if (cd_data_type == CD_MLOOPUV) {
CustomData_add_layer_named(dm->getPolyDataLayout(dm),
CD_MTEXPOLY, CD_DEFAULT,
NULL, numloops, name);
} }
return cd_ptr; return cd_ptr;