diff options
author | Ton Roosendaal <ton@blender.org> | 2004-09-26 21:15:52 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-09-26 21:15:52 +0400 |
commit | ab68f715cd79e82bec46166aacb82d8c4cc59ae1 (patch) | |
tree | 77d4d86ce3cbccb84abada5df6b4ff67106fa487 /source/blender/src/editmesh_mods.c | |
parent | 300939e1ba270f5e0615946373d1213eb4996bef (diff) |
New strict 'hide' rules for editmesh & new selectmodes
- vertex hidden, always means edge is hidden too
- edge hidden, always means face is hidden too
- face hidden, only means face hides
This means, that in face mode you can hide a face, whilst in edge mode
the edges will still display.
Please note, that when you have no edges saved in a Mesh, it also doesnt
store the hide flags for it, causing in/out editmode too reset hidden
edges.
Diffstat (limited to 'source/blender/src/editmesh_mods.c')
-rw-r--r-- | source/blender/src/editmesh_mods.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/source/blender/src/editmesh_mods.c b/source/blender/src/editmesh_mods.c index 89227db1af4..4b776e7fbaf 100644 --- a/source/blender/src/editmesh_mods.c +++ b/source/blender/src/editmesh_mods.c @@ -713,8 +713,11 @@ void hide_mesh(int swap) if(G.obedit==0) return; - /* hide happens on least dominant select mode */ - + /* hide happens on least dominant select mode, and flushes up, not down! (helps preventing errors in subsurf) */ + /* - vertex hidden, always means edge is hidden too + - edge hidden, always means face is hidden too + - face hidden, only set face hide + */ if(G.scene->selectmode & SCE_SELECT_VERTEX) { for(eve= em->verts.first; eve; eve= eve->next) { if((eve->f & SELECT)!=swap) { @@ -729,15 +732,13 @@ void hide_mesh(int swap) eed->h |= 1; eed->f &= ~SELECT; } - else eed->h= 0; } for(efa= em->faces.first; efa; efa= efa->next) { - if(efa->v1->h || efa->v2->h || efa->v3->h || (efa->v4 && efa->v4->h)) { + if(efa->e1->h || efa->e2->h || efa->e3->h || (efa->e4 && efa->e4->h)) { efa->h= 1; efa->f &= ~SELECT; } - else efa->h= 0; } } else if(G.scene->selectmode & SCE_SELECT_EDGE) { @@ -745,7 +746,6 @@ void hide_mesh(int swap) for(eed= em->edges.first; eed; eed= eed->next) { if((eed->f & SELECT)!=swap) { eed->h |= 1; - eed->v1->h= eed->v2->h= 1; EM_select_edge(eed, 0); } } @@ -755,7 +755,6 @@ void hide_mesh(int swap) efa->h= 1; efa->f &= ~SELECT; } - else efa->h= 0; } } else { @@ -763,15 +762,6 @@ void hide_mesh(int swap) for(efa= em->faces.first; efa; efa= efa->next) { if((efa->f & SELECT)!=swap) { efa->h= 1; - - efa->e1->h |= 1; - efa->e2->h |= 1; - efa->e3->h |= 1; - if(efa->e4) efa->e4->h |= 1; - - efa->v1->h= efa->v2->h= efa->v3->h= 1; - if(efa->v4) efa->v4->h= 1; - EM_select_face(efa, 0); } } |