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:
-rw-r--r--source/blender/blenkernel/BKE_global.h26
-rw-r--r--source/blender/blenkernel/intern/blender.c2
-rw-r--r--source/blender/include/BSE_drawview.h6
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h20
-rw-r--r--source/blender/radiosity/extern/include/radio.h2
-rw-r--r--source/blender/radiosity/intern/source/raddisplay.c50
-rw-r--r--source/blender/src/drawarmature.c19
-rw-r--r--source/blender/src/drawobject.c49
-rw-r--r--source/blender/src/drawview.c67
-rw-r--r--source/blender/src/editobject.c2
-rwxr-xr-xsource/blender/src/transform_constraints.c2
-rw-r--r--source/blender/src/transform_manipulator.c8
-rw-r--r--source/blender/src/view.c6
-rw-r--r--source/creator/creator.c4
14 files changed, 128 insertions, 135 deletions
diff --git a/source/blender/blenkernel/BKE_global.h b/source/blender/blenkernel/BKE_global.h
index 211280fae71..f7160eb1a13 100644
--- a/source/blender/blenkernel/BKE_global.h
+++ b/source/blender/blenkernel/BKE_global.h
@@ -91,15 +91,15 @@ typedef struct Global {
short totobj, totlamp, totobjsel, totcurve, totmesh, totbone, totbonesel;
int totvert, totedge, totface, totvertsel, totedgesel, totfacesel;
- short machine, afbreek, moving, colact, zbuf;
- short qual, background, imagewin, animspeed;
+ short afbreek, moving;
+ short qual, background;
short winpos, displaymode; /* used to be in Render */
/**
* The current version of Blender.
*/
short version;
- short simulf, fields, order, rt;
+ short simulf, order, rt;
int f;
/* Editmode lists */
@@ -108,9 +108,7 @@ typedef struct Global {
float textcurs[4][2];
/* Frank's variables */
- int renderd;
- int real_sfra, real_efra;
- int save_over;
+ int save_over;
/* Reevan's __NLA variables */
struct Object *obpose; /* Current posable object */
@@ -130,22 +128,12 @@ typedef struct Global {
struct bSoundListener* listener;
/* Test thingy for Nzc */
- int magic; /* toggle use of experimental render pipe */
int compat; /* toggle compatibility mode for edge rendering */
int notonlysolid;/* T-> also edge-render transparent faces */
- int useRscale; /* bitflag for using colour scaling */
- int useGscale; /* bitflag for using colour scaling */
- int useBscale; /* bitflag for using colour scaling */
- float cscale[4]; /* sliders for colour scaling */
- int Rhisto; /* flags for making histograms */
- int Ghisto;
- int Bhisto;
-
- /* special versions */
- short special1, special2;
-
+
+ /* confusing... G.f and G.flags */
int flags;
-
+
} Global;
/* **************** GLOBAL ********************* */
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index b0f84d8d844..2046dcacc06 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -201,8 +201,6 @@ void initglobals(void)
U.savetime= 1;
- G.animspeed= 4;
-
G.main= MEM_callocN(sizeof(Main), "initglobals");
strcpy(G.ima, "//");
diff --git a/source/blender/include/BSE_drawview.h b/source/blender/include/BSE_drawview.h
index 9ac833e9261..946018a198e 100644
--- a/source/blender/include/BSE_drawview.h
+++ b/source/blender/include/BSE_drawview.h
@@ -43,9 +43,12 @@ void default_gl_light(void);
void init_gl_stuff(void);
void circf(float x, float y, float rad);
void circ(float x, float y, float rad);
-void backdrawview3d(int test);
void do_viewbuts(unsigned short event);
+
+void add_view3d_after(struct View3D *v3d, struct Base *base, int type);
+
+void backdrawview3d(int test);
void drawview3dspace(struct ScrArea *sa, void *spacedata);
void drawview3d_render(struct View3D *v3d);
@@ -62,7 +65,6 @@ void end_anim_sumo(void);
void inner_play_anim_loop(int init, int mode);
int play_anim(int mode);
-
void make_axis_color(char *col, char *col2, char axis);
#endif /* BSE_DRAWVIEW_H */
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 28a30235038..da132a65e52 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -38,6 +38,7 @@ struct Object;
struct Image;
struct Tex;
struct SpaceLink;
+struct Base;
/* This is needed to not let VC choke on near and far... old
* proprietary MS extensions... */
@@ -48,6 +49,8 @@ struct SpaceLink;
#define far clipend
#endif
+#include "DNA_listBase.h"
+
/* The near/far thing is a Win EXCEPTION. Thus, leave near/far in the
* code, and patch for windows. */
@@ -59,6 +62,18 @@ typedef struct BGpic {
unsigned int *rect;
} BGpic;
+#
+#
+typedef struct View3DAfter {
+ struct View3DAfter *next, *prev;
+ struct Base *base;
+ int type;
+} View3DAfter;
+
+/* View3DAfter->type */
+#define V3D_XRAY 1
+#define V3D_TRANSP 2
+
typedef struct View3D {
struct SpaceLink *next, *prev;
int spacetype;
@@ -111,6 +126,11 @@ typedef struct View3D {
short twtype, twmode, twflag, twpad;
float twmat[4][4];
+ /* afterdraw, for xray & transparent */
+ struct ListBase afterdraw;
+ /* drawflags, denoting state */
+ short zbuf, transp, xray, pad2;
+
} View3D;
/* View3D->flag */
diff --git a/source/blender/radiosity/extern/include/radio.h b/source/blender/radiosity/extern/include/radio.h
index aebfaaaccc0..81fd9fdda2e 100644
--- a/source/blender/radiosity/extern/include/radio.h
+++ b/source/blender/radiosity/extern/include/radio.h
@@ -154,8 +154,6 @@ extern void drawsingnodeWire(RNode *rn);
extern void drawnodeSolid(RNode *rn);
extern void drawnodeGour(RNode *rn);
extern void drawpatch(RPatch *patch, unsigned int col);
-extern void drawnode_ext(RNode *rn, unsigned int col);
-extern void drawOverflowElem(void);
extern void drawfaceGour(Face *face);
extern void drawfaceSolid(Face *face);
extern void drawfaceWire(Face *face);
diff --git a/source/blender/radiosity/intern/source/raddisplay.c b/source/blender/radiosity/intern/source/raddisplay.c
index 6c0fe17d8ad..79d40cbab7d 100644
--- a/source/blender/radiosity/intern/source/raddisplay.c
+++ b/source/blender/radiosity/intern/source/raddisplay.c
@@ -202,9 +202,8 @@ void drawnodeGour(RNode *rn)
void drawpatch_ext(RPatch *patch, unsigned int col)
{
ScrArea *sa, *oldsa;
-
+ View3D *v3d;
glDrawBuffer(GL_FRONT);
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
cpack(col);
@@ -213,10 +212,14 @@ void drawpatch_ext(RPatch *patch, unsigned int col)
sa= G.curscreen->areabase.first;
while(sa) {
if (sa->spacetype==SPACE_VIEW3D) {
+ v3d= sa->spacedata.first;
+
/* use mywinget() here: otherwise it draws in header */
if(sa->win != mywinget()) areawinset(sa->win);
persp(PERSP_VIEW);
+ if(v3d->zbuf) glDisable(GL_DEPTH_TEST);
drawnodeWire(patch->first);
+ if(v3d->zbuf) glEnable(GL_DEPTH_TEST); // pretty useless?
}
sa= sa->next;
}
@@ -225,51 +228,8 @@ void drawpatch_ext(RPatch *patch, unsigned int col)
glFlush();
glDrawBuffer(GL_BACK);
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
-}
-
-void drawnode_ext(RNode *rn, unsigned int col)
-{
-
- glDrawBuffer(GL_FRONT);
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
-
- cpack(col);
-
- drawnodeWire(rn);
-
- glDrawBuffer(GL_BACK);
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
}
-void drawOverflowElem()
-{
- RNode **el, *rn;
- float *fp;
- int a;
-
- glDrawBuffer(GL_FRONT);
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
-
- cpack(0xFF9900);
-
- el= RG.elem;
- fp= RG.formfactors;
- for(a=0; a<RG.totelem; a++, el++, fp++) {
- if(*fp>1.0) {
- rn= *el;
- glBegin(GL_LINE_LOOP);
- glVertex3fv( rn->v1);
- glVertex3fv( rn->v2);
- glVertex3fv( rn->v3);
- if(rn->type==4) glVertex3fv( rn->v4);
- glEnd();
- }
- }
-
- glDrawBuffer(GL_BACK);
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
-}
void drawfaceGour(Face *face)
{
diff --git a/source/blender/src/drawarmature.c b/source/blender/src/drawarmature.c
index f285a40195d..3d57077abfa 100644
--- a/source/blender/src/drawarmature.c
+++ b/source/blender/src/drawarmature.c
@@ -427,10 +427,6 @@ static void draw_pose_channels(Object *ob, int dt)
/* and we use selection indices if not done yet */
if (arm->flag & ARM_POSEMODE) index= 0;
- if (arm->flag & ARM_DRAWXRAY) {
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
- }
-
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
bone= pchan->bone;
if(bone && !(bone->flag & BONE_HIDDEN)) {
@@ -472,9 +468,6 @@ static void draw_pose_channels(Object *ob, int dt)
/* restore things */
if (dt>OB_WIRE && (arm->flag & ARM_POSEMODE))
bglPolygonOffset(0.0);
- if (arm->flag & ARM_DRAWXRAY) {
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
- }
glDisable(GL_CULL_FACE);
}
@@ -505,10 +498,7 @@ static void set_matrix_editbone(EditBone *eBone)
/* called from drawobject.c */
void draw_armature(Object *ob, int dt)
{
- bArmature *arm;
-
- if (ob==NULL || ob->data==NULL) return; // weird check...
- arm= ob->data;
+ bArmature *arm= ob->data;
/* we use color for solid lighting */
glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
@@ -534,10 +524,6 @@ void draw_armature(Object *ob, int dt)
/* if wire over solid, set offset */
if (dt>OB_WIRE) bglPolygonOffset(1.0);
- if (arm->flag & ARM_DRAWXRAY) {
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
- }
-
for (eBone=G.edbo.first, index=0; eBone; eBone=eBone->next, index++){
glPushMatrix();
@@ -562,9 +548,6 @@ void draw_armature(Object *ob, int dt)
/* restore */
if (dt>OB_WIRE) bglPolygonOffset(0.0);
- if (arm->flag & ARM_DRAWXRAY) {
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
- }
arm->flag &= ~ARM_EDITMODE;
}
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;
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index c9fb043e332..a3ed1aa118b 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -425,7 +425,7 @@ static void draw_bgpic(void)
zoomy= (y2-y1)/ima->ibuf->y;
glEnable(GL_BLEND);
- if(G.zbuf) glDisable(GL_DEPTH_TEST);
+ if(G.vd->zbuf) glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -446,7 +446,7 @@ static void draw_bgpic(void)
glBlendFunc(GL_ONE, GL_ZERO);
glDisable(GL_BLEND);
- if(G.zbuf) glEnable(GL_DEPTH_TEST);
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
areawinset(curarea->win); // restore viewport / scissor
}
@@ -655,7 +655,7 @@ static void drawfloor(void)
if(vd->gridlines<3) return;
- if(G.zbuf && G.obedit) glDepthMask(0); // for zbuffer-select
+ if(G.vd->zbuf && G.obedit) glDepthMask(0); // for zbuffer-select
gridlines= vd->gridlines/2;
grid= gridlines*vd->grid;
@@ -756,7 +756,7 @@ static void drawfloor(void)
glEnd();
}
- if(G.zbuf && G.obedit) glDepthMask(1);
+ if(G.vd->zbuf && G.obedit) glDepthMask(1);
}
@@ -940,13 +940,13 @@ void backdrawview3d(int test)
#ifdef __APPLE__
glDrawBuffer(GL_AUX0);
#endif
- if(G.vd->drawtype > OB_WIRE) G.zbuf= TRUE;
+ if(G.vd->drawtype > OB_WIRE) G.vd->zbuf= TRUE;
curarea->win_swap &= ~WIN_BACK_OK;
glDisable(GL_DITHER);
glClearColor(0.0, 0.0, 0.0, 0.0);
- if(G.zbuf) {
+ if(G.vd->zbuf) {
glEnable(GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
@@ -965,7 +965,7 @@ void backdrawview3d(int test)
G.vd->flag &= ~V3D_NEEDBACKBUFDRAW;
G.f &= ~G_BACKBUFSEL;
- G.zbuf= FALSE;
+ G.vd->zbuf= FALSE;
glDisable(GL_DEPTH_TEST);
glEnable(GL_DITHER);
@@ -1842,6 +1842,41 @@ static void view3d_blockhandlers(ScrArea *sa)
}
+/* temp storage of Objects that need to be drawn as last */
+void add_view3d_after(View3D *v3d, Base *base, int type)
+{
+ View3DAfter *v3da= MEM_callocN(sizeof(View3DAfter), "View 3d after");
+
+ BLI_addtail(&v3d->afterdraw, v3da);
+ v3da->base= base;
+ v3da->type= type;
+}
+
+/* clears zbuffer and draws it over */
+static void view3d_draw_xray(View3D *v3d)
+{
+ View3DAfter *v3da, *next;
+ int doit= 0;
+
+ for(v3da= G.vd->afterdraw.first; v3da; v3da= v3da->next)
+ if(v3da->type==V3D_XRAY) doit= 1;
+
+ if(doit) {
+ if(v3d->zbuf) glClear(GL_DEPTH_BUFFER_BIT);
+ v3d->xray= TRUE;
+
+ for(v3da= G.vd->afterdraw.first; v3da; v3da= next) {
+ next= v3da->next;
+ if(v3da->type==V3D_XRAY) {
+ draw_object(v3da->base);
+ BLI_remlink(&G.vd->afterdraw, v3da);
+ MEM_freeN(v3da);
+ }
+ }
+ v3d->xray= FALSE;
+ }
+}
+
void drawview3dspace(ScrArea *sa, void *spacedata)
{
View3D *v3d= spacedata;
@@ -1856,7 +1891,7 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
Mat4Invert(v3d->viewinv, v3d->viewmat);
if(v3d->drawtype > OB_WIRE) {
- G.zbuf= TRUE;
+ G.vd->zbuf= TRUE;
glEnable(GL_DEPTH_TEST);
if(G.f & G_SIMULATION) {
glClearColor(0.0, 0.0, 0.0, 0.0);
@@ -2037,10 +2072,13 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
if(G.scene->radio) RAD_drawall(v3d->drawtype>=OB_SOLID);
+ /* XRAY afterdraw stuff */
+ view3d_draw_xray(G.vd);
+
BIF_draw_manipulator(sa);
- if(G.zbuf) {
- G.zbuf= FALSE;
+ if(G.vd->zbuf) {
+ G.vd->zbuf= FALSE;
glDisable(GL_DEPTH_TEST);
}
@@ -2113,7 +2151,7 @@ void drawview3d_render(struct View3D *v3d)
Mat4Invert(v3d->viewinv, v3d->viewmat);
if(v3d->drawtype > OB_WIRE) {
- G.zbuf= TRUE;
+ G.vd->zbuf= TRUE;
glEnable(GL_DEPTH_TEST);
}
@@ -2226,8 +2264,11 @@ void drawview3d_render(struct View3D *v3d)
if(G.scene->radio) RAD_drawall(G.vd->drawtype>=OB_SOLID);
- if(G.zbuf) {
- G.zbuf= FALSE;
+ /* XRAY afterdraw stuff */
+ view3d_draw_xray(G.vd);
+
+ if(G.vd->zbuf) {
+ G.vd->zbuf= FALSE;
glDisable(GL_DEPTH_TEST);
}
diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c
index f01b88a2a78..75a64a40d68 100644
--- a/source/blender/src/editobject.c
+++ b/source/blender/src/editobject.c
@@ -1788,7 +1788,7 @@ void docentre(int centremode)
allqueue(REDRAWBUTSEDIT, 0);
}
- base->object->recalc |= OB_RECALC_DATA;
+ base->object->recalc |= OB_RECALC_OB|OB_RECALC_DATA;
}
}
base= base->next;
diff --git a/source/blender/src/transform_constraints.c b/source/blender/src/transform_constraints.c
index b6ef7a8bf21..b8d7e4bbbcf 100755
--- a/source/blender/src/transform_constraints.c
+++ b/source/blender/src/transform_constraints.c
@@ -692,7 +692,7 @@ void BIF_drawConstraint(void)
glVertex3fv(vec);
glEnd();
setlinestyle(0);
- if(G.zbuf) glEnable(GL_DEPTH_TEST); // warning for global!
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
}
if (tc->mode & CON_AXIS0) {
diff --git a/source/blender/src/transform_manipulator.c b/source/blender/src/transform_manipulator.c
index ecabe7e4add..c6f68ac331c 100644
--- a/source/blender/src/transform_manipulator.c
+++ b/source/blender/src/transform_manipulator.c
@@ -955,7 +955,7 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
/* restore */
myloadmatrix(G.vd->viewmat);
gluDeleteQuadric(qobj);
- if(G.zbuf) glEnable(GL_DEPTH_TEST); // shouldn't be global, tsk!
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
}
@@ -1041,7 +1041,7 @@ static void draw_manipulator_scale(float mat[][4], int moving, int drawflags, in
/* restore */
myloadmatrix(G.vd->viewmat);
- if(G.zbuf) glEnable(GL_DEPTH_TEST); // shouldn't be global, tsk!
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
glFrontFace(GL_CCW);
}
@@ -1140,7 +1140,7 @@ static void draw_manipulator_translate(float mat[][4], int moving, int drawflags
gluDeleteQuadric(qobj);
myloadmatrix(G.vd->viewmat);
- if(G.zbuf) glEnable(GL_DEPTH_TEST); // shouldn't be global, tsk!
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
}
@@ -1240,7 +1240,7 @@ static void draw_manipulator_rotate_cyl(float mat[][4], int moving, int drawflag
gluDeleteQuadric(qobj);
myloadmatrix(G.vd->viewmat);
- if(G.zbuf) glEnable(GL_DEPTH_TEST); // shouldn't be global, tsk!
+ if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
}
diff --git a/source/blender/src/view.c b/source/blender/src/view.c
index c15f6211b48..ff7438dc840 100644
--- a/source/blender/src/view.c
+++ b/source/blender/src/view.c
@@ -886,7 +886,7 @@ short view3d_opengl_select(unsigned int *buffer, unsigned int bufsize, short x1
Mat4MulMat4(G.vd->persmat, G.vd->viewmat, curarea->winmat);
if(G.vd->drawtype > OB_WIRE) {
- G.zbuf= TRUE;
+ G.vd->zbuf= TRUE;
glEnable(GL_DEPTH_TEST);
}
@@ -903,6 +903,7 @@ short view3d_opengl_select(unsigned int *buffer, unsigned int bufsize, short x1
draw_object(BASACT);
}
else {
+ G.vd->xray= TRUE; // otherwise it postpones drawing
base= G.scene->base.first;
while(base) {
if(base->lay & G.vd->lay) {
@@ -913,6 +914,7 @@ short view3d_opengl_select(unsigned int *buffer, unsigned int bufsize, short x1
}
base= base->next;
}
+ G.vd->xray= FALSE; // restore
}
glPopName(); /* see above (pushname) */
hits= glRenderMode(GL_RENDER);
@@ -923,7 +925,7 @@ short view3d_opengl_select(unsigned int *buffer, unsigned int bufsize, short x1
Mat4MulMat4(G.vd->persmat, G.vd->viewmat, curarea->winmat);
if(G.vd->drawtype > OB_WIRE) {
- G.zbuf= 0;
+ G.vd->zbuf= 0;
glDisable(GL_DEPTH_TEST);
}
persp(PERSP_WIN);
diff --git a/source/creator/creator.c b/source/creator/creator.c
index 1c8cab55cb5..a4b932611ff 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -527,8 +527,6 @@ int main(int argc, char **argv)
case 'f':
a++;
if (G.scene && a < argc) {
- G.real_sfra = (G.scene->r.sfra);
- G.real_efra = (G.scene->r.efra);
(G.scene->r.sfra) = atoi(argv[a]);
(G.scene->r.efra) = (G.scene->r.sfra);
RE_animrender(NULL);
@@ -536,8 +534,6 @@ int main(int argc, char **argv)
break;
case 'a':
if (G.scene) {
- G.real_sfra = (G.scene->r.sfra);
- G.real_efra = (G.scene->r.efra);
RE_animrender(NULL);
}
break;