diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-07-28 09:47:46 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-07-28 09:47:46 +0400 |
commit | c32720a0c0e8a846ff1f54a663e2cea848df724f (patch) | |
tree | 7166a55fc50ed08c6417390116e56a1ab929a40f /source/blender/editors | |
parent | 51e8926cb9935da2e9cecd47acd414de241eb786 (diff) |
bugfix [#23055] transforms with proportional fall off affect hidden vertices in certain situations
faces were not being checked if they were hidden before adding their internal edges for connected proportional editing.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/transform/transform_conversions.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 0edf6f6d10c..2f8da7c2dd6 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -1775,14 +1775,17 @@ static int connectivity_edge(float mtx[][3], EditVert *v1, EditVert *v2) float edge_len; int done = 0; + /* note: hidden verts are not being checked for, this assumes + * flushing of hidden faces & edges is working right */ + + if (v1->f2 + v2->f2 == 4) + return 0; + sub_v3_v3v3(edge_vec, v1->co, v2->co); mul_m3_v3(mtx, edge_vec); edge_len = len_v3(edge_vec); - if (v1->f2 + v2->f2 == 4) - return 0; - if (v1->f2) { if (v2->f2) { if (v2->tmp.fp + edge_len + THRESHOLD < v1->tmp.fp) { @@ -1848,7 +1851,7 @@ static void editmesh_set_connectivity_distance(EditMesh *em, float mtx[][3]) /* do internal edges for quads */ for(efa= em->faces.first; efa; efa= efa->next) { - if (efa->v4) { + if (efa->v4 && efa->h==0) { done |= connectivity_edge(mtx, efa->v1, efa->v3); done |= connectivity_edge(mtx, efa->v2, efa->v4); } |