Revision: 59537
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59537
Author: walid
Date: 2013-08-26 21:34:32 +0000 (Mon, 26 Aug 2013)
Log Message:
-----------
code rewrite: edits in the CD_Shapekey CD_MDeformVert copy WIP
Modified Paths:
--------------
branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.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-08-26 21:11:52 UTC (rev 59536)
+++
branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c
2013-08-26 21:34:32 UTC (rev 59537)
@@ -96,9 +96,9 @@
BMVert *v_dst;
} BMVert_match;
-static void BM_mesh_cd_array_transfer(const CustomData *cd_src, BMElem
**array_src, int array_src_count,
- const CustomData *cd_dst, BMElem
**array_dst, int array_dst_count,
- const int layer_type, const struct
ReplaceLayerInfo *replace_info);
+static void BM_mesh_cd_array_transfer(CustomData *cd_src, BMElem **array_src,
int array_src_count,
+ CustomData *cd_dst, BMElem **array_dst,
int array_dst_count,
+ const int layer_type, const struct
ReplaceLayerInfo *UNUSED_replace_info);
static void BM_mesh_aligned_transfer(BMesh *bm_src, BMesh *bm_dst, const char
itype, const int layer_type,
const struct ReplaceLayerInfo *replace_info);
@@ -375,80 +375,46 @@
}
-static void BM_mesh_cd_array_transfer(const CustomData *cd_src, BMElem
**array_src, int array_src_count,
- const CustomData *cd_dst, BMElem
**array_dst, int array_dst_count,
- const int layer_type, const struct
ReplaceLayerInfo *replace_info)
+static void BM_mesh_cd_array_transfer(CustomData *cd_src, BMElem **array_src,
int array_src_count,
+ CustomData *cd_dst, BMElem **array_dst,
int array_dst_count,
+ const int layer_type, const struct
ReplaceLayerInfo *UNUSED(replace_info))
{
//... copy between arrays aligned arrays ...
if ((array_dst && array_src) && (array_src_count == array_dst_count)) {
- int src_lay_iter, dst_lay_iter;
- int src_lay_start = replace_info->src_lay_start;
- int src_lay_end = replace_info->src_lay_end;
- int dst_lay_start = replace_info->dst_lay_start;
-
int i;
- for (src_lay_iter = src_lay_start, dst_lay_iter =
dst_lay_start; src_lay_iter <= src_lay_end;
- src_lay_iter++, dst_lay_iter++) {
+ void *ptr;
+
+ for (i = 0; i < array_dst_count; i++) {
+ BMElem *ele_src = array_src[i];
+ BMElem *ele_dst = array_dst[i];
+
switch (layer_type) {
case CD_SHAPEKEY:
{
- //fix the layers
- int CD_basis_src =
CustomData_get_n_offset(cd_src, CD_SHAPEKEY, 0);
- int CD_basis_dst =
CustomData_get_n_offset(cd_dst, CD_SHAPEKEY, 0);
- int CD_offset_src =
CustomData_get_n_offset(cd_src, CD_SHAPEKEY, src_lay_iter);
- int CD_offset_dst =
CustomData_get_n_offset(cd_dst, CD_SHAPEKEY, dst_lay_iter);
+ ptr =
CustomData_bmesh_get(cd_src, ele_src->head.data, CD_SHAPEKEY);
+ CustomData_bmesh_set(cd_src,
ele_src->head.data, CD_SHAPEKEY, ptr);
- for (i = 0; i < array_dst_count; i++) {
+ ptr =
CustomData_bmesh_get(cd_dst, ele_dst->head.data, CD_SHAPEKEY);
+ CustomData_bmesh_set(cd_dst,
ele_dst->head.data, CD_SHAPEKEY, ptr);
- BMElem *ele_src = array_src[i];
- BMElem *ele_dst = array_dst[i];
+
CustomData_bmesh_copy_data(cd_src, cd_dst, ele_src->head.data,
&ele_dst->head.data);
- float *cos_src =
BM_ELEM_CD_GET_VOID_P(ele_src, CD_offset_src);
- float *cos_dst =
BM_ELEM_CD_GET_VOID_P(ele_dst, CD_offset_dst);
-
- float *cos_src_basis =
BM_ELEM_CD_GET_VOID_P(ele_src, CD_basis_src);
- float *cos_dst_basis =
BM_ELEM_CD_GET_VOID_P(ele_dst, CD_basis_dst);
-
- float offset[3];
-
- sub_v3_v3v3(offset, cos_src,
cos_src_basis);
- add_v3_v3v3(cos_dst, offset,
cos_dst_basis);
- sub_v3_v3v3(offset, cos_src,
cos_src_basis);
- }
-
break;
}
case CD_MDEFORMVERT:
{
- const int cd_dvert_src_offset =
CustomData_get_offset(cd_src, CD_MDEFORMVERT);
- const int cd_dvert_dst_offset =
CustomData_get_offset(cd_dst, CD_MDEFORMVERT);
- const int src_grp_ind = src_lay_start +
src_lay_iter;
- const int dst_grp_ind = dst_lay_start +
dst_lay_iter;
+ ptr =
CustomData_bmesh_get(cd_src, ele_src->head.data, CD_MDEFORMVERT);
+ CustomData_bmesh_set(cd_src,
ele_src->head.data, CD_MDEFORMVERT, ptr);
- for (i = 0; i < array_dst_count; i++) {
- MDeformVert *dv_src, *dv_dst;
- MDeformWeight *dw_src, *dw_dst;
+ ptr =
CustomData_bmesh_get(cd_dst, ele_dst->head.data, CD_MDEFORMVERT);
+ CustomData_bmesh_set(cd_dst,
ele_dst->head.data, CD_MDEFORMVERT, ptr);
- BMElem *ele_src = array_src[i];
- BMElem *ele_dst = array_dst[i];
+
CustomData_bmesh_copy_data(cd_src, cd_dst, ele_src->head.data,
&ele_dst->head.data);
- dv_src =
BM_ELEM_CD_GET_VOID_P(ele_src, cd_dvert_src_offset);
- dw_src =
defvert_verify_index(dv_src, src_grp_ind);
-
- dv_dst =
BM_ELEM_CD_GET_VOID_P(ele_dst, cd_dvert_dst_offset);
- dw_dst =
defvert_verify_index(dv_dst, dst_grp_ind);
-
- if (dw_src == NULL)
- dw_dst = NULL;
-
- else
- dw_dst->weight =
dw_src->weight;
- }
-
break;
}
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs