Update to writefile: do not save TEMPORARY or NO_COPY CD layers!
Neede for next commit (split normals API).
This commit is contained in:
@@ -56,6 +56,7 @@ extern const CustomDataMask CD_MASK_EDITMESH;
|
|||||||
extern const CustomDataMask CD_MASK_DERIVEDMESH;
|
extern const CustomDataMask CD_MASK_DERIVEDMESH;
|
||||||
extern const CustomDataMask CD_MASK_BMESH;
|
extern const CustomDataMask CD_MASK_BMESH;
|
||||||
extern const CustomDataMask CD_MASK_FACECORNERS;
|
extern const CustomDataMask CD_MASK_FACECORNERS;
|
||||||
|
extern const CustomDataMask CD_MASK_EVERYTHING;
|
||||||
|
|
||||||
/* for ORIGINDEX layer type, indicates no original index for this element */
|
/* for ORIGINDEX layer type, indicates no original index for this element */
|
||||||
#define ORIGINDEX_NONE -1
|
#define ORIGINDEX_NONE -1
|
||||||
|
|||||||
@@ -1217,6 +1217,16 @@ const CustomDataMask CD_MASK_BMESH =
|
|||||||
const CustomDataMask CD_MASK_FACECORNERS =
|
const CustomDataMask CD_MASK_FACECORNERS =
|
||||||
CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_MTEXPOLY | CD_MASK_MLOOPUV |
|
CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_MTEXPOLY | CD_MASK_MLOOPUV |
|
||||||
CD_MASK_MLOOPCOL;
|
CD_MASK_MLOOPCOL;
|
||||||
|
const CustomDataMask CD_MASK_EVERYTHING =
|
||||||
|
CD_MASK_MVERT | CD_MASK_MSTICKY /* DEPRECATED */ | CD_MASK_MDEFORMVERT | CD_MASK_MEDGE | CD_MASK_MFACE |
|
||||||
|
CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_ORIGINDEX | CD_MASK_NORMAL /* | CD_MASK_POLYINDEX */ | CD_MASK_PROP_FLT |
|
||||||
|
CD_MASK_PROP_INT | CD_MASK_PROP_STR | CD_MASK_ORIGSPACE | CD_MASK_ORCO | CD_MASK_MTEXPOLY | CD_MASK_MLOOPUV |
|
||||||
|
CD_MASK_MLOOPCOL | CD_MASK_TANGENT | CD_MASK_MDISPS | CD_MASK_PREVIEW_MCOL | CD_MASK_CLOTH_ORCO | CD_MASK_RECAST |
|
||||||
|
/* BMESH ONLY START */
|
||||||
|
CD_MASK_MPOLY | CD_MASK_MLOOP | CD_MASK_SHAPE_KEYINDEX | CD_MASK_SHAPEKEY | CD_MASK_BWEIGHT | CD_MASK_CREASE |
|
||||||
|
CD_MASK_ORIGSPACE_MLOOP | CD_MASK_PREVIEW_MLOOPCOL | CD_MASK_BM_ELEM_PYPTR |
|
||||||
|
/* BMESH ONLY END */
|
||||||
|
CD_MASK_PAINT_MASK | CD_MASK_GRID_PAINT_MASK | CD_MASK_MVERT_SKIN | CD_MASK_FREESTYLE_EDGE | CD_MASK_FREESTYLE_FACE;
|
||||||
|
|
||||||
static const LayerTypeInfo *layerType_getInfo(int type)
|
static const LayerTypeInfo *layerType_getInfo(int type)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1747,16 +1747,20 @@ static void write_grid_paint_mask(WriteData *wd, int count, GridPaintMask *grid_
|
|||||||
|
|
||||||
static void write_customdata(WriteData *wd, ID *id, int count, CustomData *data, int partial_type, int partial_count)
|
static void write_customdata(WriteData *wd, ID *id, int count, CustomData *data, int partial_type, int partial_count)
|
||||||
{
|
{
|
||||||
|
CustomData data_tmp;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
/* This copy will automatically ignore/remove layers set as NO_COPY (and TEMPORARY). */
|
||||||
|
CustomData_copy(data, &data_tmp, CD_MASK_EVERYTHING, CD_REFERENCE, count);
|
||||||
|
|
||||||
/* write external customdata (not for undo) */
|
/* write external customdata (not for undo) */
|
||||||
if (data->external && !wd->current)
|
if (data_tmp.external && !wd->current)
|
||||||
CustomData_external_write(data, id, CD_MASK_MESH, count, 0);
|
CustomData_external_write(&data_tmp, id, CD_MASK_MESH, count, 0);
|
||||||
|
|
||||||
writestruct(wd, DATA, "CustomDataLayer", data->maxlayer, data->layers);
|
writestruct_at_address(wd, DATA, "CustomDataLayer", data_tmp.maxlayer, data->layers, data_tmp.layers);
|
||||||
|
|
||||||
for (i=0; i<data->totlayer; i++) {
|
for (i = 0; i < data_tmp.totlayer; i++) {
|
||||||
CustomDataLayer *layer= &data->layers[i];
|
CustomDataLayer *layer= &data_tmp.layers[i];
|
||||||
const char *structname;
|
const char *structname;
|
||||||
int structnum, datasize;
|
int structnum, datasize;
|
||||||
|
|
||||||
@@ -1792,8 +1796,10 @@ static void write_customdata(WriteData *wd, ID *id, int count, CustomData *data,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data->external)
|
if (data_tmp.external)
|
||||||
writestruct(wd, DATA, "CustomDataExternal", 1, data->external);
|
writestruct_at_address(wd, DATA, "CustomDataExternal", 1, data->external, data_tmp.external);
|
||||||
|
|
||||||
|
CustomData_free(&data_tmp, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_meshs(WriteData *wd, ListBase *idbase)
|
static void write_meshs(WriteData *wd, ListBase *idbase)
|
||||||
|
|||||||
Reference in New Issue
Block a user