forked from bartvdbraak/blender
code cleanup: check defgroup_name_index() return value != -1, rather then checking >= 0.
also remove unused bmesh decimator code.
This commit is contained in:
parent
612768760a
commit
23baf8c9c3
@ -947,7 +947,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, float
|
||||
}
|
||||
}
|
||||
|
||||
if (use_dverts || armature_def_nr >= 0) {
|
||||
if (use_dverts || armature_def_nr != -1) {
|
||||
if (dm)
|
||||
dvert = dm->getVertData(dm, i, CD_MDEFORMVERT);
|
||||
else if (dverts && i < target_totvert)
|
||||
@ -958,7 +958,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, float
|
||||
else
|
||||
dvert = NULL;
|
||||
|
||||
if (armature_def_nr >= 0 && dvert) {
|
||||
if (armature_def_nr != -1 && dvert) {
|
||||
armature_weight = defvert_find_weight(dvert, armature_def_nr);
|
||||
|
||||
if (invert_vgroup)
|
||||
|
@ -431,7 +431,7 @@ int *defgroup_flip_map_single(Object *ob, int *flip_map_len, int use_default, in
|
||||
if (strcmp(name, dg->name)) {
|
||||
flip_num = defgroup_name_index(ob, name);
|
||||
|
||||
if (flip_num >= 0) {
|
||||
if (flip_num != -1) {
|
||||
map[defgroup] = flip_num;
|
||||
map[flip_num] = defgroup;
|
||||
}
|
||||
|
@ -1762,10 +1762,10 @@ static DerivedMesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd,
|
||||
}
|
||||
|
||||
/* apply weights into a vertex group, if doesnt exists add a new layer */
|
||||
if (defgrp_index >= 0 && !dvert && (surface->output_name[0] != '\0'))
|
||||
if (defgrp_index != -1 && !dvert && (surface->output_name[0] != '\0'))
|
||||
dvert = CustomData_add_layer_named(&result->vertData, CD_MDEFORMVERT, CD_CALLOC,
|
||||
NULL, sData->total_points, surface->output_name);
|
||||
if (defgrp_index >= 0 && dvert) {
|
||||
if (defgrp_index != -1 && dvert) {
|
||||
int i;
|
||||
for (i = 0; i < sData->total_points; i++) {
|
||||
MDeformVert *dv = &dvert[i];
|
||||
|
@ -1043,7 +1043,7 @@ static float *get_weights_array(Object *ob, char *vgroup)
|
||||
|
||||
/* find the group (weak loop-in-loop) */
|
||||
defgrp_index = defgroup_name_index(ob, vgroup);
|
||||
if (defgrp_index >= 0) {
|
||||
if (defgrp_index != -1) {
|
||||
float *weights;
|
||||
int i;
|
||||
|
||||
|
@ -348,7 +348,7 @@ void calc_latt_deform(Object *ob, float co[3], float weight)
|
||||
int ui, vi, wi, uu, vv, ww;
|
||||
|
||||
/* vgroup influence */
|
||||
int defgroup_nr = -1;
|
||||
int defgrp_index = -1;
|
||||
float co_prev[3], weight_blend = 0.0f;
|
||||
MDeformVert *dvert = BKE_lattice_deform_verts_get(ob);
|
||||
|
||||
@ -357,7 +357,7 @@ void calc_latt_deform(Object *ob, float co[3], float weight)
|
||||
if (lt->latticedata == NULL) return;
|
||||
|
||||
if (lt->vgroup[0] && dvert) {
|
||||
defgroup_nr = defgroup_name_index(ob, lt->vgroup);
|
||||
defgrp_index = defgroup_name_index(ob, lt->vgroup);
|
||||
copy_v3_v3(co_prev, co);
|
||||
}
|
||||
|
||||
@ -431,8 +431,8 @@ void calc_latt_deform(Object *ob, float co[3], float weight)
|
||||
|
||||
madd_v3_v3fl(co, <->latticedata[idx_u * 3], u);
|
||||
|
||||
if (defgroup_nr != -1)
|
||||
weight_blend += (u * defvert_find_weight(dvert + idx_u, defgroup_nr));
|
||||
if (defgrp_index != -1)
|
||||
weight_blend += (u * defvert_find_weight(dvert + idx_u, defgrp_index));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -440,7 +440,7 @@ void calc_latt_deform(Object *ob, float co[3], float weight)
|
||||
}
|
||||
}
|
||||
|
||||
if (defgroup_nr != -1)
|
||||
if (defgrp_index != -1)
|
||||
interp_v3_v3v3(co, co_prev, co, weight_blend);
|
||||
|
||||
}
|
||||
@ -669,9 +669,9 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
||||
|
||||
if (vgroup && vgroup[0] && use_vgroups) {
|
||||
Mesh *me = target->data;
|
||||
int index = defgroup_name_index(target, vgroup);
|
||||
const int defgrp_index = defgroup_name_index(target, vgroup);
|
||||
|
||||
if (index != -1 && (me->dvert || dm)) {
|
||||
if (defgrp_index != -1 && (me->dvert || dm)) {
|
||||
MDeformVert *dvert = me->dvert;
|
||||
float vec[3];
|
||||
float weight;
|
||||
@ -681,7 +681,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
||||
dvert = me->dvert;
|
||||
for (a = 0; a < numVerts; a++, dvert++) {
|
||||
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
||||
weight = defvert_find_weight(dvert, index);
|
||||
weight = defvert_find_weight(dvert, defgrp_index);
|
||||
|
||||
if (weight > 0.0f) {
|
||||
mul_m4_v3(cd.curvespace, vertexCos[a]);
|
||||
@ -699,7 +699,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
||||
for (a = 0; a < numVerts; a++, dvert++) {
|
||||
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
||||
|
||||
if (defvert_find_weight(dvert, index) > 0.0f) {
|
||||
if (defvert_find_weight(dvert, defgrp_index) > 0.0f) {
|
||||
mul_m4_v3(cd.curvespace, vertexCos[a]);
|
||||
minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]);
|
||||
}
|
||||
@ -709,7 +709,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
||||
for (a = 0; a < numVerts; a++, dvert++) {
|
||||
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
||||
|
||||
weight = defvert_find_weight(dvert, index);
|
||||
weight = defvert_find_weight(dvert, defgrp_index);
|
||||
|
||||
if (weight > 0.0f) {
|
||||
/* already in 'cd.curvespace', prev for loop */
|
||||
@ -815,16 +815,16 @@ void lattice_deform_verts(Object *laOb, Object *target, DerivedMesh *dm,
|
||||
|
||||
if (vgroup && vgroup[0] && use_vgroups) {
|
||||
Mesh *me = target->data;
|
||||
int index = defgroup_name_index(target, vgroup);
|
||||
const int defgrp_index = defgroup_name_index(target, vgroup);
|
||||
float weight;
|
||||
|
||||
if (index >= 0 && (me->dvert || dm)) {
|
||||
if (defgrp_index >= 0 && (me->dvert || dm)) {
|
||||
MDeformVert *dvert = me->dvert;
|
||||
|
||||
for (a = 0; a < numVerts; a++, dvert++) {
|
||||
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
||||
|
||||
weight = defvert_find_weight(dvert, index);
|
||||
weight = defvert_find_weight(dvert, defgrp_index);
|
||||
|
||||
if (weight > 0.0f)
|
||||
calc_latt_deform(laOb, vertexCos[a], weight * fac);
|
||||
|
@ -1238,7 +1238,7 @@ static void emit_from_derivedmesh(Object *flow_ob, SmokeDomainSettings *sds, Smo
|
||||
}
|
||||
|
||||
/* apply vertex group influence if used */
|
||||
if (defgrp_index >= 0 && dvert) {
|
||||
if (defgrp_index != -1 && dvert) {
|
||||
float weight_mask = defvert_find_weight(&dvert[v1], defgrp_index) * weights[0] +
|
||||
defvert_find_weight(&dvert[v2], defgrp_index) * weights[1] +
|
||||
defvert_find_weight(&dvert[v3], defgrp_index) * weights[2];
|
||||
|
@ -3194,7 +3194,7 @@ static void interpolate_exciter(Object *ob, int timescale, int time)
|
||||
- xxxx_to_softbody(Object *ob) : a full (new) copy, creates SB geometry
|
||||
*/
|
||||
|
||||
static void get_scalar_from_vertexgroup(Object *ob, int vertID, short groupindex, float *target)
|
||||
static void get_scalar_from_vertexgroup(Object *ob, int vertID, int groupindex, float *target)
|
||||
/* result 0 on success, else indicates error number
|
||||
-- kind of *inverse* result defintion,
|
||||
-- but this way we can signal error condition to caller
|
||||
@ -3297,7 +3297,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob)
|
||||
if ((ob->softflag & OB_SB_GOAL) && sb->vertgroup) { /* even this is a deprecated evil hack */
|
||||
/* I'd like to have it .. if (sb->namedVG_Goal[0]) */
|
||||
|
||||
get_scalar_from_vertexgroup(ob, a, (short) (sb->vertgroup-1), &bp->goal);
|
||||
get_scalar_from_vertexgroup(ob, a, sb->vertgroup - 1, &bp->goal);
|
||||
/* do this always, regardless successful read from vertex group */
|
||||
/* this is where '2.5 every thing is animatable' goes wrong in the first place jow_go_for2_5 */
|
||||
/* 1st coding action to take : move this to frame level */
|
||||
@ -3316,10 +3316,10 @@ static void mesh_to_softbody(Scene *scene, Object *ob)
|
||||
*/
|
||||
|
||||
if (sb->namedVG_Mass[0]) {
|
||||
int grp= defgroup_name_index (ob, sb->namedVG_Mass);
|
||||
/* printf("VGN %s %d\n", sb->namedVG_Mass, grp); */
|
||||
if (grp > -1) {
|
||||
get_scalar_from_vertexgroup(ob, a, (short) (grp), &bp->mass);
|
||||
int defgrp_index = defgroup_name_index (ob, sb->namedVG_Mass);
|
||||
/* printf("VGN %s %d\n", sb->namedVG_Mass, defgrp_index); */
|
||||
if (defgrp_index != -1) {
|
||||
get_scalar_from_vertexgroup(ob, a, defgrp_index, &bp->mass);
|
||||
/* 2.5 bp->mass = bp->mass * sb->nodemass; */
|
||||
/* printf("bp->mass %f\n", bp->mass); */
|
||||
|
||||
@ -3329,10 +3329,10 @@ static void mesh_to_softbody(Scene *scene, Object *ob)
|
||||
bp->springweight = 1.0f;
|
||||
|
||||
if (sb->namedVG_Spring_K[0]) {
|
||||
int grp= defgroup_name_index (ob, sb->namedVG_Spring_K);
|
||||
//printf("VGN %s %d\n", sb->namedVG_Spring_K, grp);
|
||||
if (grp > -1) {
|
||||
get_scalar_from_vertexgroup(ob, a, (short) (grp), &bp->springweight);
|
||||
int defgrp_index = defgroup_name_index (ob, sb->namedVG_Spring_K);
|
||||
//printf("VGN %s %d\n", sb->namedVG_Spring_K, defgrp_index);
|
||||
if (defgrp_index != -1) {
|
||||
get_scalar_from_vertexgroup(ob, a, defgrp_index , &bp->springweight);
|
||||
//printf("bp->springweight %f\n", bp->springweight);
|
||||
|
||||
}
|
||||
|
@ -226,7 +226,7 @@ enum {
|
||||
BM_ELEM_DRAW = (1 << 5), /* edge display */
|
||||
|
||||
/* spare tag, assumed dirty, use define in each function to name based on use */
|
||||
_BM_ELEM_TAG_ALT = (1 << 6),
|
||||
// _BM_ELEM_TAG_ALT = (1 << 6), // UNUSED
|
||||
|
||||
BM_ELEM_INTERNAL_TAG = (1 << 7) /* for low level internal API tagging,
|
||||
* since tools may want to tag verts and
|
||||
|
@ -45,19 +45,12 @@
|
||||
/* defines for testing */
|
||||
#define USE_CUSTOMDATA
|
||||
#define USE_TRIANGULATE
|
||||
// #define USE_PRESERVE_BOUNDARY /* could disable but its nicer not to mix boundary/non-boundry verts */
|
||||
|
||||
/* these checks are for rare cases that we can't avoid since they are valid meshes still */
|
||||
#define USE_SAFETY_CHECKS
|
||||
|
||||
#define BOUNDARY_PRESERVE_WEIGHT 100.0f
|
||||
|
||||
|
||||
#ifdef USE_PRESERVE_BOUNDARY
|
||||
/* re-use smooth for tagging boundary edges, not totally great */
|
||||
#define BM_ELEM_IS_BOUNDARY _BM_ELEM_TAG_ALT
|
||||
#endif
|
||||
|
||||
typedef enum CD_UseFlag {
|
||||
CD_DO_VERT,
|
||||
CD_DO_EDGE,
|
||||
@ -112,12 +105,6 @@ static void bm_decim_build_quadrics(BMesh *bm, Quadric *vquadrics)
|
||||
BLI_quadric_add_qu_qu(&vquadrics[BM_elem_index_get(e->v2)], &q);
|
||||
}
|
||||
}
|
||||
#ifdef USE_PRESERVE_BOUNDARY
|
||||
/* init: runs first! */
|
||||
/* unrelated, but do on an edge loop before we start collapsing */
|
||||
BM_elem_flag_disable(e->v1, BM_ELEM_IS_BOUNDARY);
|
||||
BM_elem_flag_disable(e->v2, BM_ELEM_IS_BOUNDARY);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -222,15 +209,6 @@ static void bm_decim_build_edge_cost(BMesh *bm,
|
||||
BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
|
||||
eheap_table[i] = NULL; /* keep sanity check happy */
|
||||
bm_decim_build_edge_cost_single(e, vquadrics, vweights, eheap, eheap_table);
|
||||
|
||||
#ifdef USE_PRESERVE_BOUNDARY
|
||||
/* init: runs second! */
|
||||
if (BM_edge_is_boundary(e)) {
|
||||
/* unrelated, but do on an edge loop before we start collapsing */
|
||||
BM_elem_flag_enable(e->v1, BM_ELEM_IS_BOUNDARY);
|
||||
BM_elem_flag_enable(e->v2, BM_ELEM_IS_BOUNDARY);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -525,29 +503,6 @@ static int bm_edge_collapse_is_degenerate(BMEdge *e_first)
|
||||
|
||||
BMEdge *e_iter;
|
||||
|
||||
#ifdef USE_PRESERVE_BOUNDARY
|
||||
const int is_boundary = BM_edge_is_boundary(e_first);
|
||||
|
||||
if (BM_elem_flag_test(e_first->v1, BM_ELEM_IS_BOUNDARY) !=
|
||||
BM_elem_flag_test(e_first->v2, BM_ELEM_IS_BOUNDARY))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
if ((is_boundary == FALSE) &&
|
||||
(BM_elem_flag_test(e_first->v1, BM_ELEM_IS_BOUNDARY) ||
|
||||
BM_elem_flag_test(e_first->v2, BM_ELEM_IS_BOUNDARY)))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* sanity */
|
||||
if (is_boundary == TRUE) {
|
||||
BLI_assert(BM_elem_flag_test(e_first->v1, BM_ELEM_IS_BOUNDARY) != FALSE);
|
||||
BLI_assert(BM_elem_flag_test(e_first->v2, BM_ELEM_IS_BOUNDARY) != FALSE);
|
||||
}
|
||||
|
||||
#endif /* USE_PRESERVE_BOUNDARY */
|
||||
|
||||
/* clear flags on both disks */
|
||||
e_iter = e_first;
|
||||
do {
|
||||
|
@ -823,12 +823,12 @@ static void psys_vg_name_set__internal(PointerRNA *ptr, const char *value, int i
|
||||
psys->vgroup[index] = 0;
|
||||
}
|
||||
else {
|
||||
int vgroup_num = defgroup_name_index(ob, value);
|
||||
int defgrp_index = defgroup_name_index(ob, value);
|
||||
|
||||
if (vgroup_num == -1)
|
||||
if (defgrp_index == -1)
|
||||
return;
|
||||
|
||||
psys->vgroup[index] = vgroup_num + 1;
|
||||
psys->vgroup[index] = defgrp_index + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -175,7 +175,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *UNUSED(ob),
|
||||
#if 0
|
||||
if ((options & BME_BEVEL_VWEIGHT) && bmd->defgrp_name[0]) {
|
||||
defgrp_index = defgroup_name_index(ob, bmd->defgrp_name);
|
||||
if (defgrp_index < 0) {
|
||||
if (defgrp_index == -1) {
|
||||
options &= ~BME_BEVEL_VWEIGHT;
|
||||
}
|
||||
}
|
||||
|
@ -226,11 +226,11 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
|
||||
int defgrp_index = defgroup_name_index(ob, mmd->vgroup);
|
||||
|
||||
/* get dverts */
|
||||
if (defgrp_index >= 0)
|
||||
if (defgrp_index != -1)
|
||||
dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
|
||||
|
||||
/* if no vgroup (i.e. dverts) found, return the initial mesh */
|
||||
if ((defgrp_index < 0) || (dvert == NULL))
|
||||
if ((defgrp_index == -1) || (dvert == NULL))
|
||||
return dm;
|
||||
|
||||
/* hashes for quickly providing a mapping from old to new - use key=oldindex, value=newindex */
|
||||
|
@ -222,7 +222,7 @@ void modifier_get_vgroup(Object *ob, DerivedMesh *dm, const char *name, MDeformV
|
||||
*defgrp_index = defgroup_name_index(ob, name);
|
||||
*dvert = NULL;
|
||||
|
||||
if (*defgrp_index >= 0) {
|
||||
if (*defgrp_index != -1) {
|
||||
if (ob->type == OB_LATTICE)
|
||||
*dvert = BKE_lattice_deform_verts_get(ob);
|
||||
else if (dm)
|
||||
|
@ -238,7 +238,7 @@ static void warpModifier_do(WarpModifierData *wmd, Object *ob,
|
||||
(fac = (wmd->falloff_radius - fac) / wmd->falloff_radius)))
|
||||
{
|
||||
/* skip if no vert group found */
|
||||
if (dvert && defgrp_index >= 0) {
|
||||
if (dvert && defgrp_index != -1) {
|
||||
dv = &dvert[i];
|
||||
|
||||
if (dv) {
|
||||
|
@ -185,7 +185,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
float *org_w; /* Array original weights. */
|
||||
float *new_w; /* Array new weights. */
|
||||
int numVerts;
|
||||
int defgrp_idx;
|
||||
int defgrp_index;
|
||||
int i;
|
||||
/* Flags. */
|
||||
int do_add = (wmd->edit_flags & MOD_WVG_EDIT_ADD2VG) != 0;
|
||||
@ -205,8 +205,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
return dm;
|
||||
|
||||
/* Get vgroup idx from its name. */
|
||||
defgrp_idx = defgroup_name_index(ob, wmd->defgrp_name);
|
||||
if (defgrp_idx < 0)
|
||||
defgrp_index = defgroup_name_index(ob, wmd->defgrp_name);
|
||||
if (defgrp_index == -1)
|
||||
return dm;
|
||||
|
||||
dvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MDEFORMVERT, numVerts);
|
||||
@ -228,7 +228,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
new_w = MEM_mallocN(sizeof(float) * numVerts, "WeightVGEdit Modifier, new_w");
|
||||
dw = MEM_mallocN(sizeof(MDeformWeight *) * numVerts, "WeightVGEdit Modifier, dw");
|
||||
for (i = 0; i < numVerts; i++) {
|
||||
dw[i] = defvert_find_index(&dvert[i], defgrp_idx);
|
||||
dw[i] = defvert_find_index(&dvert[i], defgrp_index);
|
||||
if (dw[i]) {
|
||||
org_w[i] = new_w[i] = dw[i]->weight;
|
||||
}
|
||||
@ -249,7 +249,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
|
||||
|
||||
/* Update/add/remove from vgroup. */
|
||||
weightvg_update_vg(dvert, defgrp_idx, dw, numVerts, NULL, org_w, do_add, wmd->add_threshold,
|
||||
weightvg_update_vg(dvert, defgrp_index, dw, numVerts, NULL, org_w, do_add, wmd->add_threshold,
|
||||
do_rem, wmd->rem_threshold);
|
||||
|
||||
/* If weight preview enabled... */
|
||||
|
@ -225,7 +225,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
MDeformVert *dvert = NULL;
|
||||
MDeformWeight **dw1, **tdw1, **dw2, **tdw2;
|
||||
int numVerts;
|
||||
int defgrp_idx, defgrp_idx2 = -1;
|
||||
int defgrp_index, defgrp_index_other = -1;
|
||||
float *org_w;
|
||||
float *new_w;
|
||||
int *tidx, *indices = NULL;
|
||||
@ -246,13 +246,13 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
return dm;
|
||||
|
||||
/* Get vgroup idx from its name. */
|
||||
defgrp_idx = defgroup_name_index(ob, wmd->defgrp_name_a);
|
||||
if (defgrp_idx < 0)
|
||||
defgrp_index = defgroup_name_index(ob, wmd->defgrp_name_a);
|
||||
if (defgrp_index == -1)
|
||||
return dm;
|
||||
/* Get seconf vgroup idx from its name, if given. */
|
||||
if (wmd->defgrp_name_b[0] != (char)0) {
|
||||
defgrp_idx2 = defgroup_name_index(ob, wmd->defgrp_name_b);
|
||||
if (defgrp_idx2 < 0)
|
||||
defgrp_index_other = defgroup_name_index(ob, wmd->defgrp_name_b);
|
||||
if (defgrp_index_other == -1)
|
||||
return dm;
|
||||
}
|
||||
|
||||
@ -277,10 +277,10 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
case MOD_WVG_SET_A:
|
||||
/* All vertices in first vgroup. */
|
||||
for (i = 0; i < numVerts; i++) {
|
||||
MDeformWeight *dw = defvert_find_index(&dvert[i], defgrp_idx);
|
||||
MDeformWeight *dw = defvert_find_index(&dvert[i], defgrp_index);
|
||||
if (dw) {
|
||||
tdw1[numIdx] = dw;
|
||||
tdw2[numIdx] = defvert_find_index(&dvert[i], defgrp_idx2);
|
||||
tdw2[numIdx] = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||
tidx[numIdx++] = i;
|
||||
}
|
||||
}
|
||||
@ -288,9 +288,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
case MOD_WVG_SET_B:
|
||||
/* All vertices in second vgroup. */
|
||||
for (i = 0; i < numVerts; i++) {
|
||||
MDeformWeight *dw = defvert_find_index(&dvert[i], defgrp_idx2);
|
||||
MDeformWeight *dw = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||
if (dw) {
|
||||
tdw1[numIdx] = defvert_find_index(&dvert[i], defgrp_idx);
|
||||
tdw1[numIdx] = defvert_find_index(&dvert[i], defgrp_index);
|
||||
tdw2[numIdx] = dw;
|
||||
tidx[numIdx++] = i;
|
||||
}
|
||||
@ -299,8 +299,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
case MOD_WVG_SET_OR:
|
||||
/* All vertices in one vgroup or the other. */
|
||||
for (i = 0; i < numVerts; i++) {
|
||||
MDeformWeight *adw = defvert_find_index(&dvert[i], defgrp_idx);
|
||||
MDeformWeight *bdw = defvert_find_index(&dvert[i], defgrp_idx2);
|
||||
MDeformWeight *adw = defvert_find_index(&dvert[i], defgrp_index);
|
||||
MDeformWeight *bdw = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||
if (adw || bdw) {
|
||||
tdw1[numIdx] = adw;
|
||||
tdw2[numIdx] = bdw;
|
||||
@ -311,8 +311,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
case MOD_WVG_SET_AND:
|
||||
/* All vertices in both vgroups. */
|
||||
for (i = 0; i < numVerts; i++) {
|
||||
MDeformWeight *adw = defvert_find_index(&dvert[i], defgrp_idx);
|
||||
MDeformWeight *bdw = defvert_find_index(&dvert[i], defgrp_idx2);
|
||||
MDeformWeight *adw = defvert_find_index(&dvert[i], defgrp_index);
|
||||
MDeformWeight *bdw = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||
if (adw && bdw) {
|
||||
tdw1[numIdx] = adw;
|
||||
tdw2[numIdx] = bdw;
|
||||
@ -324,8 +324,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
default:
|
||||
/* Use all vertices. */
|
||||
for (i = 0; i < numVerts; i++) {
|
||||
tdw1[i] = defvert_find_index(&dvert[i], defgrp_idx);
|
||||
tdw2[i] = defvert_find_index(&dvert[i], defgrp_idx2);
|
||||
tdw1[i] = defvert_find_index(&dvert[i], defgrp_index);
|
||||
tdw2[i] = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||
}
|
||||
numIdx = -1;
|
||||
break;
|
||||
@ -377,7 +377,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
/* Update (add to) vgroup.
|
||||
* XXX Depending on the MOD_WVG_SET_xxx option chosen, we might have to add vertices to vgroup.
|
||||
*/
|
||||
weightvg_update_vg(dvert, defgrp_idx, dw1, numIdx, indices, org_w, TRUE, -FLT_MAX, FALSE, 0.0f);
|
||||
weightvg_update_vg(dvert, defgrp_index, dw1, numIdx, indices, org_w, TRUE, -FLT_MAX, FALSE, 0.0f);
|
||||
|
||||
/* If weight preview enabled... */
|
||||
#if 0 /* XXX Currently done in mod stack :/ */
|
||||
|
@ -347,7 +347,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
int numVerts;
|
||||
float (*v_cos)[3] = NULL; /* The vertices coordinates. */
|
||||
Object *obr = NULL; /* Our target object. */
|
||||
int defgrp_idx;
|
||||
int defgrp_index;
|
||||
float *tw = NULL;
|
||||
float *org_w = NULL;
|
||||
float *new_w = NULL;
|
||||
@ -378,8 +378,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
return dm;
|
||||
|
||||
/* Get vgroup idx from its name. */
|
||||
defgrp_idx = defgroup_name_index(ob, wmd->defgrp_name);
|
||||
if (defgrp_idx < 0)
|
||||
defgrp_index = defgroup_name_index(ob, wmd->defgrp_name);
|
||||
if (defgrp_index == -1)
|
||||
return dm;
|
||||
|
||||
dvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MDEFORMVERT, numVerts);
|
||||
@ -394,7 +394,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
tw = MEM_mallocN(sizeof(float) * numVerts, "WeightVGProximity Modifier, tw");
|
||||
tdw = MEM_mallocN(sizeof(MDeformWeight *) * numVerts, "WeightVGProximity Modifier, tdw");
|
||||
for (i = 0; i < numVerts; i++) {
|
||||
MDeformWeight *_dw = defvert_find_index(&dvert[i], defgrp_idx);
|
||||
MDeformWeight *_dw = defvert_find_index(&dvert[i], defgrp_index);
|
||||
if (_dw) {
|
||||
tidx[numIdx] = i;
|
||||
tw[numIdx] = _dw->weight;
|
||||
@ -509,7 +509,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
|
||||
|
||||
/* Update vgroup. Note we never add nor remove vertices from vgroup here. */
|
||||
weightvg_update_vg(dvert, defgrp_idx, dw, numIdx, indices, org_w, FALSE, 0.0f, FALSE, 0.0f);
|
||||
weightvg_update_vg(dvert, defgrp_index, dw, numIdx, indices, org_w, FALSE, 0.0f, FALSE, 0.0f);
|
||||
|
||||
/* If weight preview enabled... */
|
||||
#if 0 /* XXX Currently done in mod stack :/ */
|
||||
|
Loading…
Reference in New Issue
Block a user