diff options
Diffstat (limited to 'source/blender/blenkernel/intern/deform.c')
-rw-r--r-- | source/blender/blenkernel/intern/deform.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index 46d3dbb462f..f904369ae97 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -49,7 +49,7 @@ #include "BLI_string.h" #include "BLI_utildefines.h" -#include "BLF_translation.h" +#include "BLT_translation.h" #include "BKE_customdata.h" #include "BKE_data_transfer.h" @@ -843,7 +843,6 @@ void defvert_add_index_notest(MDeformVert *dvert, int defgroup, const float weig void defvert_remove_group(MDeformVert *dvert, MDeformWeight *dw) { if (dvert && dw) { - MDeformWeight *dw_new; int i = dw - dvert->dw; /* Security check! */ @@ -856,20 +855,13 @@ void defvert_remove_group(MDeformVert *dvert, MDeformWeight *dw) * this deform weight, and reshuffle the others. */ if (dvert->totweight) { - dw_new = MEM_mallocN(sizeof(MDeformWeight) * (dvert->totweight), __func__); - if (dvert->dw) { -#if 1 /* since we don't care about order, swap this with the last, save a memcpy */ - if (i != dvert->totweight) { - dvert->dw[i] = dvert->dw[dvert->totweight]; - } - memcpy(dw_new, dvert->dw, sizeof(MDeformWeight) * dvert->totweight); -#else - memcpy(dw_new, dvert->dw, sizeof(MDeformWeight) * i); - memcpy(dw_new + i, dvert->dw + i + 1, sizeof(MDeformWeight) * (dvert->totweight - i)); -#endif - MEM_freeN(dvert->dw); + BLI_assert(dvert->dw != NULL); + + if (i != dvert->totweight) { + dvert->dw[i] = dvert->dw[dvert->totweight]; } - dvert->dw = dw_new; + + dvert->dw = MEM_reallocN(dvert->dw, sizeof(MDeformWeight) * dvert->totweight); } else { /* If there are no other deform weights left then just remove this one. */ @@ -1171,7 +1163,7 @@ static bool data_transfer_layersmapping_vgroups_multisrc_to_dst( } data_transfer_layersmapping_add_item(r_map, CD_FAKE_MDEFORMVERT, mix_mode, mix_factor, mix_weights, data_src, data_dst, idx_src, idx_src, - elem_size, 0, 0, 0, vgroups_datatransfer_interp); + elem_size, 0, 0, 0, vgroups_datatransfer_interp, NULL); } } break; @@ -1219,7 +1211,7 @@ static bool data_transfer_layersmapping_vgroups_multisrc_to_dst( data_transfer_layersmapping_add_item( r_map, CD_FAKE_MDEFORMVERT, mix_mode, mix_factor, mix_weights, data_src, data_dst, idx_src, idx_dst, - elem_size, 0, 0, 0, vgroups_datatransfer_interp); + elem_size, 0, 0, 0, vgroups_datatransfer_interp, NULL); } } break; @@ -1325,7 +1317,7 @@ bool data_transfer_layersmapping_vgroups( data_transfer_layersmapping_add_item(r_map, CD_FAKE_MDEFORMVERT, mix_mode, mix_factor, mix_weights, data_src, data_dst, idx_src, idx_dst, - elem_size, 0, 0, 0, vgroups_datatransfer_interp); + elem_size, 0, 0, 0, vgroups_datatransfer_interp, NULL); } } else { |