Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2004-09-26 21:15:52 +0400
committerTon Roosendaal <ton@blender.org>2004-09-26 21:15:52 +0400
commitab68f715cd79e82bec46166aacb82d8c4cc59ae1 (patch)
tree77d4d86ce3cbccb84abada5df6b4ff67106fa487 /source/blender/src/editmesh_mods.c
parent300939e1ba270f5e0615946373d1213eb4996bef (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.c22
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);
}
}