[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60916] branches/ soc-2013-meshdata_transfer/source/blender: Code Rewrite:

Walid Shouman eng.walidshouman at gmail.com
Fri Oct 25 02:30:01 CEST 2013


Revision: 60916
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60916
Author:   walid
Date:     2013-10-25 00:30:00 +0000 (Fri, 25 Oct 2013)
Log Message:
-----------
Code Rewrite:
-treating the CD_MDEFORMVERT as any other CD
-Vertex Groups transfer: disabling the group selection feature till
there's a better way to copy specific groups with the customdata api

Modified Paths:
--------------
    branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c
    branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_vgroup.c

Modified: branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c	2013-10-24 21:38:47 UTC (rev 60915)
+++ branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c	2013-10-25 00:30:00 UTC (rev 60916)
@@ -230,21 +230,17 @@
 			BMElem *ele_src = array_src[i];
 			BMElem *ele_dst = array_dst[i];
 
-			if (layer_type == CD_MDEFORMVERT) {
-				//all vertex groups will be copied as they are found in a single CD_layer
-				ptr = CustomData_bmesh_get(cd_src, ele_src->head.data, layer_type);
-				CustomData_bmesh_set(cd_dst, ele_dst->head.data, layer_type, ptr);
+			for (dst_n = dst_lay_start, src_n = src_lay_start; dst_n <= dst_lay_end; dst_n++, src_n++) {
+				ptr = CustomData_bmesh_get_n(cd_src, ele_src->head.data, layer_type, src_n);
+				CustomData_bmesh_set_n(cd_dst, ele_dst->head.data, layer_type, dst_n, ptr);
 			}
 
-			else {
-				for (dst_n = dst_lay_start, src_n = src_lay_start; dst_n <= dst_lay_end; dst_n++, src_n++) {
-					ptr = CustomData_bmesh_get_n(cd_src, ele_src->head.data, layer_type, src_n);
-					CustomData_bmesh_set_n(cd_dst, ele_dst->head.data, layer_type, dst_n, ptr);
-				}
-			}
-
 		}
 	}
+
+	else {
+		printf("%s: %d != %d\n", __func__, array_src_count, array_dst_count);
+	}
 }
 
 static void BM_mesh_transfer_aligned(BMesh *bm_src, BMesh *bm_dst, const char htype, const int layer_type,
@@ -333,18 +329,10 @@
 			ele_src = array_src[index_mapping[i]];
 			ele_dst = array_dst[i];
 
-			if (layer_type == CD_MDEFORMVERT) {
-				//all vertex groups will be copied as they are found in a single CD_layer
-				ptr = CustomData_bmesh_get(cd_src, ele_src->head.data, layer_type);
-				CustomData_bmesh_set(cd_dst, ele_dst->head.data, layer_type, ptr);
-
+			for (dst_n = dst_lay_start, src_n = src_lay_start; dst_n <= dst_lay_end; dst_n++, src_n++) {
+				ptr = CustomData_bmesh_get_n(cd_src, ele_src->head.data, layer_type, src_n);
+				CustomData_bmesh_set_n(cd_dst, ele_dst->head.data, layer_type, dst_n, ptr);
 			}
-			else {
-				for (dst_n = dst_lay_start, src_n = src_lay_start; dst_n <= dst_lay_end; dst_n++, src_n++) {
-					ptr = CustomData_bmesh_get_n(cd_src, ele_src->head.data, layer_type, src_n);
-					CustomData_bmesh_set_n(cd_dst, ele_dst->head.data, layer_type, dst_n, ptr);
-				}
-			}
 		}
 	}
 

Modified: branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_vgroup.c
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_vgroup.c	2013-10-24 21:38:47 UTC (rev 60915)
+++ branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_vgroup.c	2013-10-25 00:30:00 UTC (rev 60916)
@@ -389,6 +389,15 @@
 		replace_info.dst_lay_end = replace_info.dst_lay_start;
 	}
 
+	//this way we're disabling the feature of layer selection till we get a CD function that provides a group-based
+	//access to CD_MDEFORMVERT (ie: by customdata_layer_set_n), or may be a generalization to the CD_MDEFORMVERT
+	//representation to be split on layers except being saved in one layer
+	replace_info.src_lay_start = CustomData_get_active_layer(&me_src->vdata, CD_MDEFORMVERT);
+	replace_info.src_lay_end = replace_info.src_lay_start;
+	replace_info.dst_lay_start = CustomData_get_active_layer(&me_dst->vdata, CD_MDEFORMVERT);
+	replace_info.dst_lay_end = replace_info.dst_lay_start;
+
+
 	//allocate space
 	bm_src = BM_mesh_create(&bm_mesh_allocsize_default);
 	bm_dst = BM_mesh_create(&bm_mesh_allocsize_default);




More information about the Bf-blender-cvs mailing list