[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60014] trunk/blender/source/blender: Update to writefile: do not save TEMPORARY or NO_COPY CD layers!
Bastien Montagne
montagne29 at wanadoo.fr
Tue Sep 10 17:28:32 CEST 2013
Sorry, forget to say thanks to Brecht for his advices and review of this
code!
On 10/09/2013 17:24, Bastien Montagne wrote:
> Revision: 60014
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60014
> Author: mont29
> Date: 2013-09-10 15:24:31 +0000 (Tue, 10 Sep 2013)
> Log Message:
> -----------
> Update to writefile: do not save TEMPORARY or NO_COPY CD layers!
>
> Neede for next commit (split normals API).
>
> Modified Paths:
> --------------
> trunk/blender/source/blender/blenkernel/BKE_customdata.h
> trunk/blender/source/blender/blenkernel/intern/customdata.c
> trunk/blender/source/blender/blenloader/intern/writefile.c
>
> Modified: trunk/blender/source/blender/blenkernel/BKE_customdata.h
> ===================================================================
> --- trunk/blender/source/blender/blenkernel/BKE_customdata.h 2013-09-10 15:12:53 UTC (rev 60013)
> +++ trunk/blender/source/blender/blenkernel/BKE_customdata.h 2013-09-10 15:24:31 UTC (rev 60014)
> @@ -56,6 +56,7 @@
> extern const CustomDataMask CD_MASK_DERIVEDMESH;
> extern const CustomDataMask CD_MASK_BMESH;
> extern const CustomDataMask CD_MASK_FACECORNERS;
> +extern const CustomDataMask CD_MASK_EVERYTHING;
>
> /* for ORIGINDEX layer type, indicates no original index for this element */
> #define ORIGINDEX_NONE -1
>
> Modified: trunk/blender/source/blender/blenkernel/intern/customdata.c
> ===================================================================
> --- trunk/blender/source/blender/blenkernel/intern/customdata.c 2013-09-10 15:12:53 UTC (rev 60013)
> +++ trunk/blender/source/blender/blenkernel/intern/customdata.c 2013-09-10 15:24:31 UTC (rev 60014)
> @@ -1217,6 +1217,16 @@
> const CustomDataMask CD_MASK_FACECORNERS =
> CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_MTEXPOLY | CD_MASK_MLOOPUV |
> 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)
> {
>
> Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
> ===================================================================
> --- trunk/blender/source/blender/blenloader/intern/writefile.c 2013-09-10 15:12:53 UTC (rev 60013)
> +++ trunk/blender/source/blender/blenloader/intern/writefile.c 2013-09-10 15:24:31 UTC (rev 60014)
> @@ -1747,16 +1747,20 @@
>
> static void write_customdata(WriteData *wd, ID *id, int count, CustomData *data, int partial_type, int partial_count)
> {
> + CustomData data_tmp;
> 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) */
> - if (data->external&& !wd->current)
> - CustomData_external_write(data, id, CD_MASK_MESH, count, 0);
> + if (data_tmp.external&& !wd->current)
> + 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++) {
> - CustomDataLayer *layer=&data->layers[i];
> + for (i = 0; i< data_tmp.totlayer; i++) {
> + CustomDataLayer *layer=&data_tmp.layers[i];
> const char *structname;
> int structnum, datasize;
>
> @@ -1792,8 +1796,10 @@
> }
> }
>
> - if (data->external)
> - writestruct(wd, DATA, "CustomDataExternal", 1, data->external);
> + if (data_tmp.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)
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
More information about the Bf-committers
mailing list