diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-11-30 14:04:14 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-11-30 14:04:14 +0400 |
commit | d24bbba150e5359a8b4c876fb387b3f7d69897d0 (patch) | |
tree | cca953c9fee3b470ede8addb239fb6126dfaf3f5 /source/blender/blenkernel/intern/dynamicpaint.c | |
parent | c9edbab08a4854ad6e79abdfaaee65e0f9301ac0 (diff) |
dynamic paint
- replace inline code with existig defvert_find_index()
- use madd_v3_v3fl() func and remove redundant normalize call.
Diffstat (limited to 'source/blender/blenkernel/intern/dynamicpaint.c')
-rw-r--r-- | source/blender/blenkernel/intern/dynamicpaint.c | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c index a6ca7fcab36..9a5bbf8e6b8 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.c +++ b/source/blender/blenkernel/intern/dynamicpaint.c @@ -1703,25 +1703,16 @@ static struct DerivedMesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData MDeformWeight *def_weight = defvert_find_index(dv, defgrp_index); /* skip if weight value is 0 and no existing weight is found */ - if (!def_weight && !weight[i]) - continue; - - /* if not found, add a weight for it */ - if (!def_weight) { - MDeformWeight *newdw = MEM_callocN(sizeof(MDeformWeight)*(dv->totweight+1), - "deformWeight"); - if(dv->dw){ - memcpy(newdw, dv->dw, sizeof(MDeformWeight)*dv->totweight); - MEM_freeN(dv->dw); + if ((def_weight != NULL) || (weight[i] != 0.0f)) { + + /* if not found, add a weight for it */ + if (def_weight == NULL) { + def_weight= defvert_verify_index(dv, defgrp_index); } - dv->dw=newdw; - dv->dw[dv->totweight].def_nr=defgrp_index; - def_weight = &dv->dw[dv->totweight]; - dv->totweight++; - } - /* set weight value */ - def_weight->weight = weight[i]; + /* set weight value */ + def_weight->weight = weight[i]; + } } } } @@ -1735,11 +1726,7 @@ static struct DerivedMesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData for (i=0; i<sData->total_points; i++) { float normal[3]; normal_short_to_float_v3(normal, mvert[i].no); - normalize_v3(normal); - - mvert[i].co[0] += normal[0]*wPoint[i].height; - mvert[i].co[1] += normal[1]*wPoint[i].height; - mvert[i].co[2] += normal[2]*wPoint[i].height; + madd_v3_v3fl(mvert[i].co, normal, wPoint[i].height); } CDDM_calc_normals(result); } |