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-10-01 00:38:35 +0400
committerTon Roosendaal <ton@blender.org>2004-10-01 00:38:35 +0400
commit8ae56af0cf3af36d4f0a9b21575e773ba678bb49 (patch)
treebccb08b605bc21001d11a25e22ffa84a30285be1 /source/blender/src/editmesh_mods.c
parent742e00db3f92eb43449027bd2ece97bbfd5b4aa5 (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.c20
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();
}
}