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_lib.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_lib.c')
-rw-r--r--source/blender/src/editmesh_lib.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/src/editmesh_lib.c b/source/blender/src/editmesh_lib.c
index d3e6314d154..7b718109085 100644
--- a/source/blender/src/editmesh_lib.c
+++ b/source/blender/src/editmesh_lib.c
@@ -302,15 +302,37 @@ void EM_selectmode_set(void)
if(eed->f & SELECT) EM_select_edge(eed, 1);
/* selects faces based on edge status */
EM_selectmode_flush();
+
}
else if(G.scene->selectmode == SCE_SELECT_FACE) {
/* deselect eges, and select again based on face select */
for(eed= em->edges.first; eed; eed= eed->next) EM_select_edge(eed, 0);
+
for(efa= em->faces.first; efa; efa= efa->next)
if(efa->f & SELECT) EM_select_face(efa, 1);
}
}
+/* paranoia check, actually only for entering editmode. rule:
+- vertex hidden, always means edge is hidden too
+- edge hidden, always means face is hidden too
+- face hidden, dont change anything
+*/
+void EM_hide_reset(void)
+{
+ EditMesh *em = G.editMesh;
+ EditEdge *eed;
+ EditFace *efa;
+
+ for(eed= em->edges.first; eed; eed= eed->next)
+ if(eed->v1->h || eed->v2->h) eed->h |= 1;
+
+ for(efa= em->faces.first; efa; efa= efa->next)
+ if((efa->e1->h & 1) || (efa->e2->h & 1) || (efa->e3->h & 1) || (efa->e4 && (efa->e4->h & 1)))
+ efa->h= 1;
+
+}
+
/* ******** EXTRUDE ********* */