void EM_free_index_arrays(void) {} // XXX
#define EM_FGON 0
EditFace *EM_get_actFace(int x) {return NULL;} // XXX
-int draw_armature(Base *base, int x, int y) {return 0;} // XXX
-int em_solidoffs; // XXX
-int em_wireoffs;
-int em_vertoffs;
+
+extern unsigned int em_vertoffs, em_solidoffs, em_wireoffs;
/* check for glsl drawing */
data->func(data->userData, eed, s[0][0], s[0][1], s[1][0], s[1][1], index);
}
}
+
void mesh_foreachScreenEdge(ARegion *ar, View3D *v3d, void (*func)(void *userData, EditEdge *eed, int x0, int y0, int x1, int y1, int index), void *userData, int clipVerts)
{
struct { void (*func)(void *userData, EditEdge *eed, int x0, int y0, int x1, int y1, int index); void *userData; ARegion *ar; View3D *v3d; int clipVerts; float pmat[4][4], vmat[4][4]; } data;
data->func(data->userData, efa, s[0], s[1], index);
}
}
+
void mesh_foreachScreenFace(ARegion *ar, View3D *v3d, void (*func)(void *userData, EditFace *efa, int x, int y, int index), void *userData)
{
struct { void (*func)(void *userData, EditFace *efa, int x, int y, int index); void *userData; ARegion *ar; View3D *v3d; float pmat[4][4], vmat[4][4]; } data;
/* draw a sphere for use as an empty drawtype */
static void draw_empty_sphere (float size)
{
- float cent=0;
- GLUquadricObj *qobj = gluNewQuadric();
- gluQuadricDrawStyle(qobj, GLU_SILHOUETTE);
+ static GLuint displist=0;
+
+ if (displist == 0) {
+ GLUquadricObj *qobj;
- glPushMatrix();
- glTranslatef(cent, cent, cent);
- glScalef(size, size, size);
- gluSphere(qobj, 1.0, 8, 5);
+ displist= glGenLists(1);
+ glNewList(displist, GL_COMPILE_AND_EXECUTE);
- glPopMatrix();
+ glPushMatrix();
+
+ qobj = gluNewQuadric();
+ gluQuadricDrawStyle(qobj, GLU_SILHOUETTE);
+ gluDisk(qobj, 0.0, 1, 16, 1);
+
+ glRotatef(90, 0, 1, 0);
+ gluDisk(qobj, 0.0, 1, 16, 1);
+
+ glRotatef(90, 1, 0, 0);
+ gluDisk(qobj, 0.0, 1, 16, 1);
+
+ gluDeleteQuadric(qobj);
+
+ glPopMatrix();
+ glEndList();
+ }
- gluDeleteQuadric(qobj);
+ glScalef(size, size, size);
+ glCallList(displist);
+ glScalef(1/size, 1/size, 1/size);
}
/* draw a cone for use as an empty drawtype */
}
/* draws wire outline */
-static void drawSolidSelect(View3D *v3d, Base *base)
+static void drawSolidSelect(Scene *scene, View3D *v3d, Base *base)
{
Object *ob= base->object;
}
else if(ob->type==OB_ARMATURE) {
if(!(ob->flag & OB_POSEMODE))
- draw_armature(base, OB_WIRE, 0);
+ draw_armature(scene, v3d, base, OB_WIRE, 0);
}
glLineWidth(1.0);
if((v3d->flag & V3D_SELECT_OUTLINE) && ob->type!=OB_MESH) {
if(dt>OB_WIRE && dt<OB_TEXTURE && ob!=G.obedit && (flag && DRAW_SCENESET)==0) {
if (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(flag&DRAW_PICKING)) {
- drawSolidSelect(v3d, base);
+ drawSolidSelect(scene, v3d, base);
}
}
}
break;
case OB_ARMATURE:
if(dt>OB_WIRE) GPU_enable_material(0, NULL); // we use default material
- empty_object= draw_armature(base, dt, flag);
+ empty_object= draw_armature(scene, v3d, base, dt, flag);
if(dt>OB_WIRE) GPU_disable_material();
break;
default: