diff options
author | Ton Roosendaal <ton@blender.org> | 2004-10-01 00:38:35 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-10-01 00:38:35 +0400 |
commit | 8ae56af0cf3af36d4f0a9b21575e773ba678bb49 (patch) | |
tree | bccb08b605bc21001d11a25e22ffa84a30285be1 /source/blender/src/editmesh_mods.c | |
parent | 742e00db3f92eb43449027bd2ece97bbfd5b4aa5 (diff) |
Recoded how 'handles' were implemented; these were extra wireframe edges
actually, adding vertices and edges to displist.
Now the subsurfer gives editvertices a pointer to the subsurfed vertex
location; allowing not only vertices in 'optimal' draw to show correct, but
also gives proper handling of borderselect and lasso for edges. :)
Diffstat (limited to 'source/blender/src/editmesh_mods.c')
-rw-r--r-- | source/blender/src/editmesh_mods.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/source/blender/src/editmesh_mods.c b/source/blender/src/editmesh_mods.c index e0788df5cc2..1b123e33b96 100644 --- a/source/blender/src/editmesh_mods.c +++ b/source/blender/src/editmesh_mods.c @@ -581,6 +581,7 @@ static EditFace *findnearestface(short *dist) /* for interactivity, frontbuffer draw in current window */ static void unified_select_draw(EditVert *eve, EditEdge *eed, EditFace *efa) { + int optimal= subsurf_optimal(G.obedit); glDrawBuffer(GL_FRONT); @@ -608,13 +609,13 @@ static void unified_select_draw(EditVert *eve, EditEdge *eed, EditFace *efa) 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); if(dl) dlm= dl->mesh; - if(dlm && (me->flag & ME_OPT_EDGES) && (me->flag & ME_SUBSURF) && me->subdiv) { + if(dlm && optimal) { MEdge *medge= dlm->medge; MVert *mvert= dlm->mvert; int b; @@ -659,10 +660,8 @@ static void unified_select_draw(EditVert *eve, EditEdge *eed, EditFace *efa) Mesh *me= G.obedit->data; DispList *dl= find_displist(&me->disp, DL_MESH); DispListMesh *dlm= NULL; - int optimal=0; if(dl) dlm= dl->mesh; - if( (me->flag & ME_OPT_EDGES) && (me->flag & ME_SUBSURF) && me->subdiv) optimal= 1; if(eed->f & SELECT) BIF_ThemeColor(TH_EDGE_SELECT); else BIF_ThemeColor(TH_WIRE); @@ -698,20 +697,27 @@ static void unified_select_draw(EditVert *eve, EditEdge *eed, EditFace *efa) else BIF_ThemeColor(TH_VERTEX); bglBegin(GL_POINTS); - bglVertex3fv(eed->v1->co); - bglVertex3fv(eed->v2->co); + if(optimal) { + bglVertex3fv(eed->v1->ssco); + bglVertex3fv(eed->v2->ssco); + } else { + bglVertex3fv(eed->v1->co); + bglVertex3fv(eed->v2->co); + } bglEnd(); } } if(eve) { if(G.scene->selectmode & SCE_SELECT_VERTEX) { + glPointSize(BIF_GetThemeValuef(TH_VERTEX_SIZE)); if(eve->f & SELECT) BIF_ThemeColor(TH_VERTEX_SELECT); else BIF_ThemeColor(TH_VERTEX); bglBegin(GL_POINTS); - bglVertex3fv(eve->co); + if(optimal) bglVertex3fv(eve->ssco); + else bglVertex3fv(eve->co); bglEnd(); } } |