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:
Diffstat (limited to 'source/blender/src/drawobject.c')
-rw-r--r--source/blender/src/drawobject.c49
1 files changed, 27 insertions, 22 deletions
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c
index d87f4826f0d..8fe7f69dd5e 100644
--- a/source/blender/src/drawobject.c
+++ b/source/blender/src/drawobject.c
@@ -960,12 +960,12 @@ static void drawlattice(Object *ob)
calc_lattverts();
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
+ if(G.vd->zbuf) glDisable(GL_DEPTH_TEST);
tekenvertslatt(0);
tekenvertslatt(1);
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
}
else lattice_modifier(ob, 'e');
@@ -1339,7 +1339,7 @@ static void draw_em_fancy_verts(EditMesh *em, DerivedMesh *cageDM)
{
int sel;
- if(G.zbuf) glDepthMask(0); // disable write in zbuffer, zbuf select
+ if(G.vd->zbuf) glDepthMask(0); // disable write in zbuffer, zbuf select
for (sel=0; sel<2; sel++) {
char col[4], fcol[4];
@@ -1353,7 +1353,7 @@ static void draw_em_fancy_verts(EditMesh *em, DerivedMesh *cageDM)
float fsize = BIF_GetThemeValuef(TH_FACEDOT_SIZE);
if (pass==0) {
- if(G.zbuf && !(G.vd->flag&V3D_ZBUF_SELECT)) {
+ if(G.vd->zbuf && !(G.vd->flag&V3D_ZBUF_SELECT)) {
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -1388,7 +1388,7 @@ static void draw_em_fancy_verts(EditMesh *em, DerivedMesh *cageDM)
}
}
- if(G.zbuf) glDepthMask(1);
+ if(G.vd->zbuf) glDepthMask(1);
glPointSize(1.0);
}
@@ -1404,7 +1404,7 @@ static void draw_em_fancy_edges(DerivedMesh *cageDM)
for (pass=0; pass<2; pass++) {
/* show wires in transparant when no zbuf clipping for select */
if (pass==0) {
- if (G.zbuf && (G.vd->flag & V3D_ZBUF_SELECT)==0) {
+ if (G.vd->zbuf && (G.vd->flag & V3D_ZBUF_SELECT)==0) {
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
@@ -1472,10 +1472,10 @@ static void draw_em_measure_stats(Object *ob, EditMesh *em)
char val[32]; /* Stores the measurement display text here */
float area, col[3]; /* area of the face, colour of the text to draw */
- if(G.zbuf && (G.vd->flag & V3D_ZBUF_SELECT)==0)
+ if(G.vd->zbuf && (G.vd->flag & V3D_ZBUF_SELECT)==0)
glDisable(GL_DEPTH_TEST);
- if(G.zbuf) bglPolygonOffset(5.0);
+ if(G.vd->zbuf) bglPolygonOffset(5.0);
if(G.f & G_DRAW_EDGELEN) {
BIF_GetThemeColor3fv(TH_TEXT, col);
@@ -1616,7 +1616,7 @@ static void draw_em_measure_stats(Object *ob, EditMesh *em)
}
}
- if(G.zbuf) {
+ if(G.vd->zbuf) {
glEnable(GL_DEPTH_TEST);
bglPolygonOffset(0.0);
}
@@ -2755,7 +2755,7 @@ static void drawnurb(Object *ob, Nurb *nurb, int dt)
calc_Nurbverts(nurb);
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
+ if(G.vd->zbuf) glDisable(GL_DEPTH_TEST);
nu= nurb;
while(nu) {
@@ -2770,7 +2770,7 @@ static void drawnurb(Object *ob, Nurb *nurb, int dt)
nu= nu->next;
}
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
}
static void tekentextcurs(void)
@@ -3342,10 +3342,9 @@ static void drawSolidSelect(Object *ob)
else if(ob->type==OB_ARMATURE) {
if(ob!=G.obpose) {
bArmature *arm= ob->data;
- int oldflag= arm->flag;
- arm->flag &= ~ARM_DRAWXRAY;
- draw_armature(ob, OB_WIRE); // patch needed for xray option...
- arm->flag= oldflag;
+
+ if(G.vd->xray || (arm->flag & ARM_DRAWXRAY)==0)
+ draw_armature(ob, OB_WIRE);
}
}
@@ -3537,7 +3536,7 @@ void draw_object(Base *base)
/* maximum drawtype */
dt= MIN2(G.vd->drawtype, ob->dt);
- if(G.zbuf==0 && dt>OB_WIRE) dt= OB_WIRE;
+ if(G.vd->zbuf==0 && dt>OB_WIRE) dt= OB_WIRE;
dtx= 0;
/* faceselect exception: also draw solid when dt==wire, except in editmode */
@@ -3714,7 +3713,13 @@ void draw_object(Base *base)
drawlattice(ob);
break;
case OB_ARMATURE:
- draw_armature (ob, dt);
+ {
+ bArmature *arm= ob->data;
+ if(G.vd->xray==0 && (arm->flag & ARM_DRAWXRAY))
+ add_view3d_after(G.vd, base, V3D_XRAY);
+ else
+ draw_armature(ob, dt);
+ }
break;
default:
drawaxes(1.0);
@@ -3810,7 +3815,7 @@ void draw_object(Base *base)
}
/* object centers */
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
+ if(G.vd->zbuf) glDisable(GL_DEPTH_TEST);
if(ob->type == OB_LAMP) {
if(ob->id.lib) {
if(base->flag & SELECT) rect= rectllib_sel;
@@ -3841,7 +3846,7 @@ void draw_object(Base *base)
}
draw_icon_centered(ob->obmat[3], rect, 4);
}
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
}
else if((G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT))==0) {
@@ -3861,7 +3866,7 @@ void draw_object_ext(Base *base)
if(G.vd==NULL || base==NULL) return;
if(G.vd->drawtype > OB_WIRE) {
- G.zbuf= 1;
+ G.vd->zbuf= 1;
glEnable(GL_DEPTH_TEST);
}
@@ -3877,8 +3882,8 @@ void draw_object_ext(Base *base)
glFlush(); /* reveil frontbuffer drawing */
glDrawBuffer(GL_BACK);
- if(G.zbuf) {
- G.zbuf= 0;
+ if(G.vd->zbuf) {
+ G.vd->zbuf= 0;
glDisable(GL_DEPTH_TEST);
}
curarea->win_swap= WIN_FRONT_OK;