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/blenkernel/intern/subsurf.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/blenkernel/intern/subsurf.c')
-rw-r--r--source/blender/blenkernel/intern/subsurf.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/source/blender/blenkernel/intern/subsurf.c b/source/blender/blenkernel/intern/subsurf.c
index 0b490ff645f..280af7c4a53 100644
--- a/source/blender/blenkernel/intern/subsurf.c
+++ b/source/blender/blenkernel/intern/subsurf.c
@@ -430,6 +430,12 @@ static HyperMesh *hypermesh_from_editmesh(EditMesh *em, int subdivLevels) {
float creasefac= (float)subdivLevels;
int flag;
+ /* hide flags rule:
+ - face hidden, not do. is easy
+ - edge hidden, always means face is hidden too
+ - vertex hidden, always means edge is hidden too
+ */
+
/* we only add vertices with edges, 'f1' is a free flag */
/* added: check for hide flag in vertices */
for (ev= em->verts.first; ev; ev= ev->next) {
@@ -462,22 +468,18 @@ static HyperMesh *hypermesh_from_editmesh(EditMesh *em, int subdivLevels) {
}
for (ef= em->faces.first; ef; ef= ef->next) {
if(ef->h==0) {
- // this extra check needed, hide flags can be inconsistant
- if((ef->e1->h & 1) || (ef->e2->h & 1) || (ef->e3->h & 1) || (ef->e4 && (ef->e4->h & 1)));
- else {
- int nverts= ef->v4?4:3;
- HyperVert *verts[4];
- HyperFace *f;
-
- verts[0]= (HyperVert*) ef->v1->prev;
- verts[1]= (HyperVert*) ef->v2->prev;
- verts[2]= (HyperVert*) ef->v3->prev;
- if (nverts>3)
- verts[3]= (HyperVert*) ef->v4->prev;
-
- f= hypermesh_add_face(hme, verts, nverts, DR_OPTIM);
- f->orig.ef= ef;
- }
+ int nverts= ef->v4?4:3;
+ HyperVert *verts[4];
+ HyperFace *f;
+
+ verts[0]= (HyperVert*) ef->v1->prev;
+ verts[1]= (HyperVert*) ef->v2->prev;
+ verts[2]= (HyperVert*) ef->v3->prev;
+ if (nverts>3)
+ verts[3]= (HyperVert*) ef->v4->prev;
+
+ f= hypermesh_add_face(hme, verts, nverts, DR_OPTIM);
+ f->orig.ef= ef;
}
}