[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:24:31 CEST 2013


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)




More information about the Bf-blender-cvs mailing list