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-28 18:53:44 +0400
committerTon Roosendaal <ton@blender.org>2004-09-28 18:53:44 +0400
commitfc0c3a084dd20fd350ba4fe2c9e5f4d3889839f6 (patch)
tree909aa39f938cbc366ccfb7c64a5f49279ddfc54a /source/blender/src/editmesh_mods.c
parentff5e65bdbbda9425c6e1f81590ee894d3b787235 (diff)
Last of the beautifying for subsurf+optimal editing; selectmode 'face' now
draws on click the optimal outline correctly
Diffstat (limited to 'source/blender/src/editmesh_mods.c')
-rw-r--r--source/blender/src/editmesh_mods.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/source/blender/src/editmesh_mods.c b/source/blender/src/editmesh_mods.c
index 97cdf131dc9..c440f9bd064 100644
--- a/source/blender/src/editmesh_mods.c
+++ b/source/blender/src/editmesh_mods.c
@@ -633,16 +633,40 @@ static void unified_select_draw(EditVert *eve, EditEdge *eed, EditFace *efa)
}
if(G.scene->selectmode & (SCE_SELECT_EDGE|SCE_SELECT_FACE)) {
+ Mesh *me= G.obedit->data;
+ DispList *dl= find_displist(&me->disp, DL_MESH);
+ DispListMesh *dlm= NULL;
+
if(efa->fgonf==0) {
if(efa->f & SELECT) BIF_ThemeColor(TH_EDGE_SELECT);
else BIF_ThemeColor(TH_WIRE);
- glBegin(GL_LINE_LOOP);
- glVertex3fv(efa->v1->co);
- glVertex3fv(efa->v2->co);
- glVertex3fv(efa->v3->co);
- if(efa->v4) glVertex3fv(efa->v4->co);
- glEnd();
+ if(dl) dlm= dl->mesh;
+ if(dlm && (me->flag & ME_OPT_EDGES) && (me->flag & ME_SUBSURF) && me->subdiv) {
+ MEdge *medge= dlm->medge;
+ MVert *mvert= dlm->mvert;
+ int b;
+
+ glBegin(GL_LINES);
+ for (b=0; b<dlm->totedge; b++, medge++) {
+ if(medge->flag & ME_EDGEDRAW) {
+ EditEdge *eed = dlm->editedge[b];
+ if(efa->e1==eed || efa->e2==eed || efa->e3==eed || (efa->e4 && efa->e4==eed)) {
+ glVertex3fv(mvert[medge->v1].co);
+ glVertex3fv(mvert[medge->v2].co);
+ }
+ }
+ }
+ glEnd();
+ }
+ else {
+ glBegin(GL_LINE_LOOP);
+ glVertex3fv(efa->v1->co);
+ glVertex3fv(efa->v2->co);
+ glVertex3fv(efa->v3->co);
+ if(efa->v4) glVertex3fv(efa->v4->co);
+ glEnd();
+ }
}
}