[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