Alembic: changed 'void *user_data' to 'Mesh *mesh'

The only thing that is stored in this pointer is a `Mesh*`, and casting
it from/to `void*` is unnecessary and confusing. Maybe the entire
CDStreamConfig class could/should be removed at some point.

No functional changes.
This commit is contained in:
Sybren A. Stüvel
2019-07-04 12:04:39 +02:00
parent 3568d56bcc
commit e74847e6bb
3 changed files with 9 additions and 10 deletions

View File

@@ -353,7 +353,7 @@ static void read_custom_data_mcols(const std::string &iobject_full_name,
/* Read the vertex colors */ /* Read the vertex colors */
void *cd_data = config.add_customdata_cb( void *cd_data = config.add_customdata_cb(
config.user_data, prop_header.getName().c_str(), CD_MLOOPCOL); config.mesh, prop_header.getName().c_str(), CD_MLOOPCOL);
MCol *cfaces = static_cast<MCol *>(cd_data); MCol *cfaces = static_cast<MCol *>(cd_data);
MPoly *mpolys = config.mpoly; MPoly *mpolys = config.mpoly;
MLoop *mloops = config.mloop; MLoop *mloops = config.mloop;
@@ -437,8 +437,7 @@ static void read_custom_data_uvs(const ICompoundProperty &prop,
return; return;
} }
void *cd_data = config.add_customdata_cb( void *cd_data = config.add_customdata_cb(config.mesh, prop_header.getName().c_str(), CD_MLOOPUV);
config.user_data, prop_header.getName().c_str(), CD_MLOOPUV);
read_uvs(config, cd_data, sample.getVals(), sample.getIndices()); read_uvs(config, cd_data, sample.getVals(), sample.getIndices());
} }

View File

@@ -28,6 +28,7 @@
#include <Alembic/AbcGeom/All.h> #include <Alembic/AbcGeom/All.h>
struct CustomData; struct CustomData;
struct Mesh;
struct MLoop; struct MLoop;
struct MLoopUV; struct MLoopUV;
struct MPoly; struct MPoly;
@@ -60,8 +61,8 @@ struct CDStreamConfig {
/* TODO(kevin): might need a better way to handle adding and/or updating /* TODO(kevin): might need a better way to handle adding and/or updating
* custom datas such that it updates the custom data holder and its pointers * custom datas such that it updates the custom data holder and its pointers
* properly. */ * properly. */
void *user_data; Mesh *mesh;
void *(*add_customdata_cb)(void *user_data, const char *name, int data_type); void *(*add_customdata_cb)(Mesh *mesh, const char *name, int data_type);
float weight; float weight;
float time; float time;
@@ -75,7 +76,7 @@ struct CDStreamConfig {
totpoly(0), totpoly(0),
totvert(0), totvert(0),
pack_uvs(false), pack_uvs(false),
user_data(NULL), mesh(NULL),
add_customdata_cb(NULL), add_customdata_cb(NULL),
weight(0.0f), weight(0.0f),
time(0.0f), time(0.0f),

View File

@@ -900,7 +900,7 @@ ABC_INLINE void read_uvs_params(CDStreamConfig &config,
name = uv.getName(); name = uv.getName();
} }
void *cd_ptr = config.add_customdata_cb(config.user_data, name.c_str(), CD_MLOOPUV); void *cd_ptr = config.add_customdata_cb(config.mesh, name.c_str(), CD_MLOOPUV);
config.mloopuv = static_cast<MLoopUV *>(cd_ptr); config.mloopuv = static_cast<MLoopUV *>(cd_ptr);
} }
} }
@@ -960,9 +960,8 @@ static void set_smooth_poly_flag(Mesh *mesh)
} }
} }
static void *add_customdata_cb(void *user_data, const char *name, int data_type) static void *add_customdata_cb(Mesh *mesh, const char *name, int data_type)
{ {
Mesh *mesh = static_cast<Mesh *>(user_data);
CustomDataType cd_data_type = static_cast<CustomDataType>(data_type); CustomDataType cd_data_type = static_cast<CustomDataType>(data_type);
void *cd_ptr; void *cd_ptr;
CustomData *loopdata; CustomData *loopdata;
@@ -1047,7 +1046,7 @@ CDStreamConfig get_config(Mesh *mesh)
BLI_assert(mesh->mvert || mesh->totvert == 0); BLI_assert(mesh->mvert || mesh->totvert == 0);
config.user_data = mesh; config.mesh = mesh;
config.mvert = mesh->mvert; config.mvert = mesh->mvert;
config.mloop = mesh->mloop; config.mloop = mesh->mloop;
config.mpoly = mesh->mpoly; config.mpoly = mesh->mpoly;