- added drawMapped{Verts,Edges,Faces}EMSelect calls to DerivedMesh with
implementations - updated drawobject selection code to use DerivedMesh (last DispListMesh usage in drawobject.c that needs to be replaced! Woot!) - interface could still be a lot cleaner, mostly calculating indices for the various things to pass to selection color routine is hacky.
This commit is contained in:
@@ -105,6 +105,14 @@ struct DerivedMesh {
|
||||
*/
|
||||
void (*drawFacesEM)(DerivedMesh *dm, int useColor, unsigned char *baseCol, unsigned char *selCol);
|
||||
|
||||
/* Draw mapped verts as bgl points
|
||||
* o Call setColor(offset+index) for each vert, where index is the
|
||||
* vert's index in the EditMesh. Return offset+count where count
|
||||
* is the total number of mapped verts.
|
||||
* o Only if mapped EditVert->h==0
|
||||
*/
|
||||
int (*drawMappedVertsEMSelect)(DerivedMesh *dm, void (*setColor)(int index), int offset);
|
||||
|
||||
/* Draw mapped edges as lines
|
||||
* o Call setColor(offset+index) for each edge, where index is the
|
||||
* edge's index in the EditMesh. Return offset+count where count
|
||||
@@ -113,6 +121,14 @@ struct DerivedMesh {
|
||||
*/
|
||||
int (*drawMappedEdgesEMSelect)(DerivedMesh *dm, void (*setColor)(int index), int offset);
|
||||
|
||||
/* Draw mapped faces
|
||||
* o Call setColor(offset+index) for each face, where index is the
|
||||
* face's index in the EditMesh. Return offset+count where count
|
||||
* is the total number of mapped faces.
|
||||
* o Only if mapped EditFace->h==0
|
||||
*/
|
||||
int (*drawMappedFacesEMSelect)(DerivedMesh *dm, void (*setColor)(int index), int offset);
|
||||
|
||||
void (*release)(DerivedMesh *dm);
|
||||
};
|
||||
|
||||
|
||||
@@ -393,12 +393,15 @@ static DerivedMesh *getMeshDerivedMesh(Object *ob, float *extverts, float *nors)
|
||||
|
||||
mdm->dm.drawVerts = meshDM_drawVerts;
|
||||
mdm->dm.drawMappedVertsEM = NULL;
|
||||
mdm->dm.drawMappedVertsEMSelect = NULL;
|
||||
|
||||
mdm->dm.drawEdges = meshDM_drawEdges;
|
||||
mdm->dm.drawMappedEdges = meshDM_drawEdges;
|
||||
mdm->dm.drawLooseEdges = meshDM_drawLooseEdges;
|
||||
mdm->dm.drawMappedEdgeEM = NULL;
|
||||
mdm->dm.drawMappedEdgesEM = NULL;
|
||||
mdm->dm.drawMappedEdgesEMSelect = NULL;
|
||||
mdm->dm.drawMappedFacesEMSelect = NULL;
|
||||
|
||||
mdm->dm.drawFacesSolid = meshDM_drawFacesSolid;
|
||||
mdm->dm.drawFacesColored = meshDM_drawFacesColored;
|
||||
@@ -433,6 +436,23 @@ static void emDM_drawMappedVertsEM(DerivedMesh *dm, int sel)
|
||||
}
|
||||
bglEnd();
|
||||
}
|
||||
static int emDM_drawMappedVertsEMSelect(DerivedMesh *dm, void (*setColor)(int index), int offset)
|
||||
{
|
||||
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
|
||||
EditVert *eve;
|
||||
int i = offset;
|
||||
|
||||
bglBegin(GL_POINTS);
|
||||
for(eve= emdm->em->verts.first; eve; eve= eve->next, i++) {
|
||||
if(eve->h==0) {
|
||||
setColor(i);
|
||||
bglVertex3fv(eve->co);
|
||||
}
|
||||
}
|
||||
bglEnd();
|
||||
|
||||
return i;
|
||||
}
|
||||
static void emDM_drawMappedEdgeEM(DerivedMesh *dm, void *edge)
|
||||
{
|
||||
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
|
||||
@@ -465,6 +485,25 @@ static void emDM_drawMappedEdgesEM(DerivedMesh *dm, int useColor, char *baseCol,
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
static int emDM_drawMappedEdgesEMSelect(DerivedMesh *dm, void (*setColor)(int index), int offset)
|
||||
{
|
||||
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
|
||||
EditEdge *eed;
|
||||
int i;
|
||||
|
||||
i = offset;
|
||||
glBegin(GL_LINES);
|
||||
for(eed= emdm->em->edges.first; eed; eed= eed->next, i++) {
|
||||
if (eed->h==0) {
|
||||
setColor(i);
|
||||
glVertex3fv(eed->v1->co);
|
||||
glVertex3fv(eed->v2->co);
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
|
||||
return i;
|
||||
}
|
||||
static void emDM_drawFacesEM(DerivedMesh *dm, int useColor, unsigned char *baseCol, unsigned char *selCol)
|
||||
{
|
||||
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
|
||||
@@ -485,25 +524,6 @@ static void emDM_drawFacesEM(DerivedMesh *dm, int useColor, unsigned char *baseC
|
||||
}
|
||||
}
|
||||
}
|
||||
static int emDM_drawMappedEdgesEMSelect(DerivedMesh *dm, void (*setColor)(int index), int offset)
|
||||
{
|
||||
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
|
||||
EditEdge *eed;
|
||||
int i;
|
||||
|
||||
i = offset;
|
||||
glBegin(GL_LINES);
|
||||
for(eed= emdm->em->edges.first; eed; eed= eed->next, i++) {
|
||||
if (eed->h==0) {
|
||||
setColor(i);
|
||||
glVertex3fv(eed->v1->co);
|
||||
glVertex3fv(eed->v2->co);
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
|
||||
return i;
|
||||
}
|
||||
static void emDM_drawFacesSolid(DerivedMesh *dm, void (*setMaterial)(int))
|
||||
{
|
||||
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
|
||||
@@ -523,6 +543,27 @@ static void emDM_drawFacesSolid(DerivedMesh *dm, void (*setMaterial)(int))
|
||||
}
|
||||
}
|
||||
}
|
||||
static int emDM_drawMappedFacesEMSelect(DerivedMesh *dm, void (*setColor)(int index), int offset)
|
||||
{
|
||||
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
|
||||
EditFace *efa;
|
||||
int i = offset;
|
||||
|
||||
for (efa= emdm->em->faces.first; efa; efa= efa->next, i++) {
|
||||
if (efa->h==0) {
|
||||
setColor(i);
|
||||
|
||||
glBegin(efa->v4?GL_QUADS:GL_TRIANGLES);
|
||||
glVertex3fv(efa->v1->co);
|
||||
glVertex3fv(efa->v2->co);
|
||||
glVertex3fv(efa->v3->co);
|
||||
if(efa->v4) glVertex3fv(efa->v4->co);
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
static int emDM_getNumVerts(DerivedMesh *dm)
|
||||
{
|
||||
@@ -554,6 +595,7 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em)
|
||||
|
||||
emdm->dm.drawVerts = NULL;
|
||||
emdm->dm.drawMappedVertsEM = emDM_drawMappedVertsEM;
|
||||
emdm->dm.drawMappedVertsEMSelect = emDM_drawMappedVertsEMSelect;
|
||||
|
||||
emdm->dm.drawEdges = NULL;
|
||||
emdm->dm.drawMappedEdges = NULL;
|
||||
@@ -561,6 +603,7 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em)
|
||||
emdm->dm.drawMappedEdgeEM = emDM_drawMappedEdgeEM;
|
||||
emdm->dm.drawMappedEdgesEM = emDM_drawMappedEdgesEM;
|
||||
emdm->dm.drawMappedEdgesEMSelect = emDM_drawMappedEdgesEMSelect;
|
||||
emdm->dm.drawMappedFacesEMSelect = emDM_drawMappedFacesEMSelect;
|
||||
|
||||
emdm->dm.drawFacesSolid = emDM_drawFacesSolid;
|
||||
emdm->dm.drawFacesColored = NULL;
|
||||
@@ -595,6 +638,23 @@ static void ssDM_drawMappedVertsEM(DerivedMesh *dm, int sel)
|
||||
}
|
||||
bglEnd();
|
||||
}
|
||||
static int ssDM_drawMappedVertsEMSelect(DerivedMesh *dm, void (*setColor)(int index), int offset)
|
||||
{
|
||||
SSDerivedMesh *ssdm = (SSDerivedMesh*) dm;
|
||||
EditVert *eve;
|
||||
int i = offset;
|
||||
|
||||
bglBegin(GL_POINTS);
|
||||
for(eve= ssdm->em->verts.first; eve; eve= eve->next, i++) {
|
||||
if(eve->h==0 && eve->ssco) {
|
||||
setColor(i);
|
||||
bglVertex3fv(eve->ssco);
|
||||
}
|
||||
}
|
||||
bglEnd();
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
static void ssDM_drawMappedEdges(DerivedMesh *dm)
|
||||
{
|
||||
@@ -868,6 +928,36 @@ static void ssDM_drawFacesEM(DerivedMesh *dm, int useColor, unsigned char *baseC
|
||||
}
|
||||
}
|
||||
}
|
||||
static int ssDM_drawMappedFacesEMSelect(DerivedMesh *dm, void (*setColor)(int index), int offset)
|
||||
{
|
||||
SSDerivedMesh *ssdm = (SSDerivedMesh*) dm;
|
||||
DispListMesh *dlm = ssdm->dlm;
|
||||
MFace *mface= dlm->mface;
|
||||
int i, endOffset;
|
||||
EditFace *prevefa, *efa;
|
||||
|
||||
for (i=offset, efa=ssdm->em->faces.first; efa; efa= efa->next, i++)
|
||||
efa->prev = (EditFace*) i;
|
||||
endOffset = i;
|
||||
|
||||
for(i=0; i<dlm->totface; i++, mface++) {
|
||||
if(mface->v3 && dlm->editface[i]->h==0) {
|
||||
setColor((int) dlm->editface[i]->prev);
|
||||
|
||||
glBegin(mface->v4?GL_QUADS:GL_TRIANGLES);
|
||||
glVertex3fv(dlm->mvert[mface->v1].co);
|
||||
glVertex3fv(dlm->mvert[mface->v2].co);
|
||||
glVertex3fv(dlm->mvert[mface->v3].co);
|
||||
if (mface->v4) glVertex3fv(dlm->mvert[mface->v4].co);
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
for (prevefa= NULL, efa= ssdm->em->faces.first; efa; prevefa= efa, efa= efa->next)
|
||||
efa->prev= prevefa;
|
||||
|
||||
return endOffset;
|
||||
}
|
||||
|
||||
static int ssDM_getNumVerts(DerivedMesh *dm)
|
||||
{
|
||||
@@ -899,6 +989,7 @@ static DerivedMesh *getSSDerivedMesh(EditMesh *em, DispListMesh *dlm, float *nor
|
||||
|
||||
ssdm->dm.drawVerts = ssDM_drawVerts;
|
||||
ssdm->dm.drawMappedVertsEM = ssDM_drawMappedVertsEM;
|
||||
ssdm->dm.drawMappedVertsEMSelect = ssDM_drawMappedVertsEMSelect;
|
||||
|
||||
ssdm->dm.drawEdges = ssDM_drawEdges;
|
||||
ssdm->dm.drawMappedEdges = ssDM_drawMappedEdges;
|
||||
@@ -906,6 +997,7 @@ static DerivedMesh *getSSDerivedMesh(EditMesh *em, DispListMesh *dlm, float *nor
|
||||
ssdm->dm.drawMappedEdgeEM = ssDM_drawMappedEdgeEM;
|
||||
ssdm->dm.drawMappedEdgesEM = ssDM_drawMappedEdgesEM;
|
||||
ssdm->dm.drawMappedEdgesEMSelect = ssDM_drawMappedEdgesEMSelect;
|
||||
ssdm->dm.drawMappedFacesEMSelect = ssDM_drawMappedFacesEMSelect;
|
||||
|
||||
ssdm->dm.drawFacesSolid = ssDM_drawFacesSolid;
|
||||
ssdm->dm.drawFacesColored = ssDM_drawFacesColored;
|
||||
@@ -984,7 +1076,7 @@ DerivedMesh *mesh_get_base_derived(Object *ob)
|
||||
DerivedMesh *mesh_get_cage_derived(struct Object *ob)
|
||||
{
|
||||
Mesh *me= ob->data;
|
||||
DerivedMesh *dm;
|
||||
DerivedMesh *dm = NULL;
|
||||
|
||||
if (me->flag&ME_OPT_EDGES) {
|
||||
dm = mesh_get_derived(ob);
|
||||
|
||||
@@ -3646,132 +3646,49 @@ void draw_object_ext(Base *base)
|
||||
|
||||
/* ***************** BACKBUF SEL (BBS) ********* */
|
||||
|
||||
static int bbs_mesh_verts(Object *ob, int offset)
|
||||
static int bbs_mesh_verts(DerivedMesh *dm, int offset)
|
||||
{
|
||||
EditVert *eve;
|
||||
int a= offset, optimal= subsurf_optimal(ob);
|
||||
int retval;
|
||||
|
||||
glPointSize( BIF_GetThemeValuef(TH_VERTEX_SIZE) );
|
||||
|
||||
bglBegin(GL_POINTS);
|
||||
for(eve= G.editMesh->verts.first; eve; eve= eve->next, a++) {
|
||||
if(eve->h==0) {
|
||||
set_framebuffer_index_color(a);
|
||||
if(optimal && eve->ssco) bglVertex3fv(eve->ssco);
|
||||
else bglVertex3fv(eve->co);
|
||||
}
|
||||
}
|
||||
bglEnd();
|
||||
|
||||
retval = dm->drawMappedVertsEMSelect(dm, set_framebuffer_index_color, offset);
|
||||
glPointSize(1.0);
|
||||
return a;
|
||||
}
|
||||
|
||||
/* two options, edgecolors or black */
|
||||
static int bbs_mesh_wire(Object *ob, int offset)
|
||||
{
|
||||
EditEdge *eed;
|
||||
Mesh *me= ob->data;
|
||||
DispList *dl= find_displist(&me->disp, DL_MESH);
|
||||
DispListMesh *dlm= NULL; // DISPLISTKILL
|
||||
int index, b, retval, optimal=0;
|
||||
|
||||
if(dl) dlm= dl->mesh;
|
||||
optimal= subsurf_optimal(ob);
|
||||
|
||||
if(dlm && optimal) {
|
||||
MEdge *medge= dlm->medge;
|
||||
MVert *mvert= dlm->mvert;
|
||||
|
||||
// tuck original indices in vn
|
||||
for(b=0, eed= G.editMesh->edges.first; eed; eed= eed->next, b++) eed->vn= (EditVert *)(b+offset);
|
||||
retval= b+offset;
|
||||
glBegin(GL_LINES);
|
||||
for (b=0; b<dlm->totedge; b++, medge++) {
|
||||
if(medge->flag & ME_EDGEDRAW) {
|
||||
eed= dlm->editedge[b];
|
||||
if(eed && eed->h==0) {
|
||||
set_framebuffer_index_color((int)eed->vn);
|
||||
|
||||
glVertex3fv(mvert[medge->v1].co);
|
||||
glVertex3fv(mvert[medge->v2].co);
|
||||
}
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
else {
|
||||
index= offset;
|
||||
cpack(0);
|
||||
glBegin(GL_LINES);
|
||||
for(eed= G.editMesh->edges.first; eed; eed= eed->next, index++) {
|
||||
if(eed->h==0) {
|
||||
|
||||
set_framebuffer_index_color(index);
|
||||
|
||||
glVertex3fv(eed->v1->co);
|
||||
glVertex3fv(eed->v2->co);
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
retval= index;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int bbs_mesh_wire(DerivedMesh *dm, int offset)
|
||||
{
|
||||
return dm->drawMappedEdgesEMSelect(dm, set_framebuffer_index_color, offset);
|
||||
}
|
||||
|
||||
/* two options, facecolors or black */
|
||||
static int bbs_mesh_solid(Object *ob, int facecol)
|
||||
static int bbs_mesh_solid(Object *ob, DerivedMesh *dm, int facecol)
|
||||
{
|
||||
int glmode, a;
|
||||
|
||||
cpack(0);
|
||||
|
||||
if(ob==G.obedit) {
|
||||
Mesh *me= ob->data;
|
||||
EditFace *efa;
|
||||
DispList *dl= find_displist(&me->disp, DL_MESH);
|
||||
DispListMesh *dlm= NULL; // DISPLISTKILL
|
||||
int b;
|
||||
if (facecol) {
|
||||
EditFace *efa, *prevefa;
|
||||
int b;
|
||||
|
||||
if(dl) dlm= dl->mesh;
|
||||
a= 0;
|
||||
dm->drawMappedFacesEMSelect(dm, set_framebuffer_index_color, 1);
|
||||
|
||||
if(dlm && dlm->editface) {
|
||||
EditFace *prevefa;
|
||||
MFace *mface;
|
||||
efa= NULL;
|
||||
// tuck original indices in efa->prev
|
||||
for(b=1, efa= G.editMesh->faces.first; efa; efa= efa->next, b++)
|
||||
efa->prev= (EditFace *)(b);
|
||||
a = b;
|
||||
|
||||
// tuck original indices in efa->prev
|
||||
for(b=1, efa= G.editMesh->faces.first; efa; efa= efa->next, b++) efa->prev= (EditFace *)(b);
|
||||
a= b+1; // correct return value, next loop excludes hidden faces
|
||||
|
||||
for(b=0, mface= dlm->mface; b<dlm->totface; b++, mface++) {
|
||||
if(mface->v3) {
|
||||
if(facecol) {
|
||||
efa= dlm->editface[b];
|
||||
set_framebuffer_index_color((int)efa->prev);
|
||||
}
|
||||
|
||||
glBegin(mface->v4?GL_QUADS:GL_TRIANGLES);
|
||||
glVertex3fv(dlm->mvert[mface->v1].co);
|
||||
glVertex3fv(dlm->mvert[mface->v2].co);
|
||||
glVertex3fv(dlm->mvert[mface->v3].co);
|
||||
if (mface->v4) glVertex3fv(dlm->mvert[mface->v4].co);
|
||||
glEnd();
|
||||
}
|
||||
}
|
||||
|
||||
if(facecol && (G.scene->selectmode & SCE_SELECT_FACE)) {
|
||||
if(G.scene->selectmode & SCE_SELECT_FACE) {
|
||||
glPointSize(BIF_GetThemeValuef(TH_FACEDOT_SIZE));
|
||||
|
||||
bglBegin(GL_POINTS);
|
||||
for(efa= G.editMesh->faces.first; efa; efa= efa->next) {
|
||||
if(efa->h==0) {
|
||||
if(efa->fgonf==EM_FGON);
|
||||
else {
|
||||
set_framebuffer_index_color((int)efa->prev);
|
||||
bglVertex3fv(efa->cent);
|
||||
}
|
||||
if(efa->h==0 && efa->fgonf!=EM_FGON) {
|
||||
set_framebuffer_index_color((int)efa->prev);
|
||||
bglVertex3fv(efa->cent);
|
||||
}
|
||||
}
|
||||
bglEnd();
|
||||
@@ -3779,29 +3696,11 @@ static int bbs_mesh_solid(Object *ob, int facecol)
|
||||
|
||||
for (prevefa= NULL, efa= G.editMesh->faces.first; efa; prevefa= efa, efa= efa->next)
|
||||
efa->prev= prevefa;
|
||||
|
||||
return a;
|
||||
} else {
|
||||
dm->drawFacesEM(dm, 0, NULL, NULL);
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
a= 1;
|
||||
glBegin(GL_QUADS);
|
||||
glmode= GL_QUADS;
|
||||
for(efa= G.editMesh->faces.first; efa; efa= efa->next, a++) {
|
||||
if(efa->h==0) {
|
||||
if(efa->v4) {if(glmode==GL_TRIANGLES) {glmode= GL_QUADS; glEnd(); glBegin(GL_QUADS);}}
|
||||
else {if(glmode==GL_QUADS) {glmode= GL_TRIANGLES; glEnd(); glBegin(GL_TRIANGLES);}}
|
||||
|
||||
if(facecol) {
|
||||
set_framebuffer_index_color(a);
|
||||
}
|
||||
glVertex3fv(efa->v1->co);
|
||||
glVertex3fv(efa->v2->co);
|
||||
glVertex3fv(efa->v3->co);
|
||||
if(efa->v4) glVertex3fv(efa->v4->co);
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
if(facecol) return a;
|
||||
}
|
||||
else {
|
||||
Mesh *me= ob->data;
|
||||
@@ -3810,7 +3709,7 @@ static int bbs_mesh_solid(Object *ob, int facecol)
|
||||
TFace *tface;
|
||||
DispList *dl;
|
||||
float *extverts=NULL;
|
||||
int a, totface, hastface, i;
|
||||
int a, totface, hastface;
|
||||
|
||||
mvert= me->mvert;
|
||||
mface= me->mface;
|
||||
@@ -3849,13 +3748,14 @@ static int bbs_mesh_solid(Object *ob, int facecol)
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
return 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void draw_object_backbufsel(Object *ob)
|
||||
{
|
||||
extern int em_solidoffs, em_wireoffs, em_vertoffs; // let linker solve it... from editmesh_mods.c
|
||||
DerivedMesh *dm;
|
||||
|
||||
mymultmatrix(ob->obmat);
|
||||
|
||||
@@ -3864,23 +3764,25 @@ void draw_object_backbufsel(Object *ob)
|
||||
|
||||
switch( ob->type) {
|
||||
case OB_MESH:
|
||||
if(G.obedit) {
|
||||
dm = mesh_get_cage_derived(ob);
|
||||
|
||||
em_solidoffs= bbs_mesh_solid(ob, G.scene->selectmode & SCE_SELECT_FACE);
|
||||
if(G.obedit) {
|
||||
em_solidoffs= bbs_mesh_solid(ob, dm, G.scene->selectmode & SCE_SELECT_FACE);
|
||||
|
||||
bglPolygonOffset(1.0);
|
||||
|
||||
// we draw edges always, for loop (select) tools
|
||||
em_wireoffs= bbs_mesh_wire(ob, em_solidoffs);
|
||||
em_wireoffs= bbs_mesh_wire(dm, em_solidoffs);
|
||||
|
||||
if(G.scene->selectmode & SCE_SELECT_VERTEX)
|
||||
em_vertoffs= bbs_mesh_verts(ob, em_wireoffs);
|
||||
em_vertoffs= bbs_mesh_verts(dm, em_wireoffs);
|
||||
else em_vertoffs= em_wireoffs;
|
||||
|
||||
bglPolygonOffset(0.0);
|
||||
}
|
||||
else bbs_mesh_solid(ob, 1); // 1= facecol, faceselect
|
||||
else bbs_mesh_solid(ob, dm, 1); // 1= facecol, faceselect
|
||||
|
||||
dm->release(dm);
|
||||
break;
|
||||
case OB_CURVE:
|
||||
case OB_SURF:
|
||||
|
||||
@@ -629,15 +629,7 @@ static EditFace *findnearestface(short *dist)
|
||||
static void unified_select_draw(EditVert *eve, EditEdge *eed, EditFace *efa)
|
||||
{
|
||||
int optimal= subsurf_optimal(G.obedit);
|
||||
DerivedMesh *dm = NULL;
|
||||
Mesh *me = G.obedit->data;
|
||||
|
||||
if (me->flag&ME_OPT_EDGES) {
|
||||
dm = mesh_get_derived(G.obedit);
|
||||
}
|
||||
if (!dm) {
|
||||
dm = mesh_get_base_derived(G.obedit);
|
||||
}
|
||||
DerivedMesh *dm = mesh_get_cage_derived(G.obedit);
|
||||
|
||||
glDrawBuffer(GL_FRONT);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user