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/editors/space_view3d')
-rw-r--r--source/blender/editors/space_view3d/drawarmature.c4
-rw-r--r--source/blender/editors/space_view3d/drawmesh.c7
-rw-r--r--source/blender/editors/space_view3d/drawobject.c122
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c4
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c23
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c23
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c7
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c39
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c14
9 files changed, 126 insertions, 117 deletions
diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c
index c9307f8e1fb..b1b1f504920 100644
--- a/source/blender/editors/space_view3d/drawarmature.c
+++ b/source/blender/editors/space_view3d/drawarmature.c
@@ -2516,8 +2516,8 @@ int draw_armature(Scene *scene, View3D *v3d, Base *base, int dt, int flag)
/* arm->flag is being used to detect mode... */
/* editmode? */
- if(ob==G.obedit || (G.obedit && ob->data==G.obedit->data)) {
- if(ob==G.obedit) arm->flag |= ARM_EDITMODE;
+ if(arm->edbo) {
+ arm->flag |= ARM_EDITMODE;
draw_ebones(v3d, ob, dt);
arm->flag &= ~ARM_EDITMODE;
}
diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c
index 53487ca79ff..ad62329f8fc 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -340,7 +340,8 @@ static void draw_textured_begin(Scene *scene, View3D *v3d, Object *ob)
unsigned char obcol[4];
int istex, solidtex= 0;
- if(v3d->drawtype==OB_SOLID || (ob==G.obedit && v3d->drawtype!=OB_TEXTURE)) {
+ // XXX scene->obedit warning
+ if(v3d->drawtype==OB_SOLID || (ob==scene->obedit && v3d->drawtype!=OB_TEXTURE)) {
/* draw with default lights in solid draw mode and edit mode */
solidtex= 1;
Gtexdraw.islit= -1;
@@ -470,7 +471,7 @@ void draw_mesh_text(Scene *scene, Object *ob, int glsl)
return;
/* don't draw when editing */
- if(ob==G.obedit)
+ if(me->edit_mesh)
return;
else if(ob==OBACT)
if(FACESEL_PAINT_TEST)
@@ -568,7 +569,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, Object *ob, DerivedMesh *dm,
draw_textured_end();
/* draw edges and selected faces over textured mesh */
- if(!G.obedit && faceselect)
+ if(!me->edit_mesh && faceselect)
draw_tfaces3D(v3d, ob, me, dm);
/* reset from negative scale correction */
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 70435e54e9d..963eaf15c48 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -144,7 +144,7 @@ int draw_glsl_material(Scene *scene, Object *ob, View3D *v3d, int dt)
(G.fileflags & G_FILE_GAME_MAT_GLSL) && (dt >= OB_SHADED));
}
-static int check_material_alpha(Base *base, Object *ob, int glsl)
+static int check_material_alpha(Base *base, Mesh *me, int glsl)
{
if(base->flag & OB_FROMDUPLI)
return 0;
@@ -152,10 +152,10 @@ static int check_material_alpha(Base *base, Object *ob, int glsl)
if(G.f & G_PICKSEL)
return 0;
- if(G.obedit && G.obedit->data==ob->data)
+ if(me->edit_mesh)
return 0;
- return (glsl || (ob->dtx & OB_DRAWTRANSP));
+ return (glsl || (base->object->dtx & OB_DRAWTRANSP));
}
/***/
@@ -1084,7 +1084,7 @@ static void lattice_draw_verts(Lattice *lt, DispList *dl, short sel)
void lattice_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, BPoint *bp, int x, int y), void *userData)
{
BPoint *bp = editLatt->def;
- DispList *dl = find_displist(&G.obedit->disp, DL_VERTS);
+ DispList *dl = find_displist(&vc->obedit->disp, DL_VERTS);
float *co = dl?dl->verts:NULL;
float pmat[4][4], vmat[4][4];
int i, N = editLatt->pntsu*editLatt->pntsv*editLatt->pntsw;
@@ -1125,19 +1125,17 @@ static void drawlattice__point(Lattice *lt, DispList *dl, int u, int v, int w, i
/* lattice color is hardcoded, now also shows weightgroup values in edit mode */
static void drawlattice(View3D *v3d, Object *ob)
{
- Lattice *lt;
+ Lattice *lt= ob->data;
DispList *dl;
int u, v, w;
int use_wcol= 0;
- lt= (ob==G.obedit)?editLatt:ob->data;
-
/* now we default make displist, this will modifiers work for non animated case */
if(ob->disp.first==NULL)
lattice_calc_modifiers(ob);
dl= find_displist(&ob->disp, DL_VERTS);
- if(ob==G.obedit) {
+ if(lt->editlatt) {
cpack(0x004000);
if(ob->defbase.first && lt->dvert) {
@@ -1146,6 +1144,8 @@ static void drawlattice(View3D *v3d, Object *ob)
}
}
+ if(lt->editlatt) lt= lt->editlatt;
+
glBegin(GL_LINES);
for(w=0; w<lt->pntsw; w++) {
int wxt = (w==0 || w==lt->pntsw-1);
@@ -1175,7 +1175,7 @@ static void drawlattice(View3D *v3d, Object *ob)
if(use_wcol)
glShadeModel(GL_FLAT);
- if(ob==G.obedit) {
+ if( ((Lattice *)ob->data)->editlatt ) {
if(v3d->zbuf) glDisable(GL_DEPTH_TEST);
lattice_draw_verts(lt, dl, 0);
@@ -1207,7 +1207,7 @@ static void mesh_foreachScreenVert__mapFunc(void *userData, int index, float *co
void mesh_foreachScreenVert(ViewContext *vc, void (*func)(void *userData, EditVert *eve, int x, int y, int index), void *userData, int clipVerts)
{
struct { void (*func)(void *userData, EditVert *eve, int x, int y, int index); void *userData; ViewContext vc; int clipVerts; float pmat[4][4], vmat[4][4]; } data;
- DerivedMesh *dm = editmesh_get_derived_cage(vc->em, CD_MASK_BAREMESH);
+ DerivedMesh *dm = editmesh_get_derived_cage(vc->obedit, vc->em, CD_MASK_BAREMESH);
data.vc= *vc;
data.func = func;
@@ -1251,7 +1251,7 @@ static void mesh_foreachScreenEdge__mapFunc(void *userData, int index, float *v0
void mesh_foreachScreenEdge(ViewContext *vc, 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; ViewContext vc; int clipVerts; float pmat[4][4], vmat[4][4]; } data;
- DerivedMesh *dm = editmesh_get_derived_cage(vc->em, CD_MASK_BAREMESH);
+ DerivedMesh *dm = editmesh_get_derived_cage(vc->obedit, vc->em, CD_MASK_BAREMESH);
data.vc= *vc;
data.func = func;
@@ -1283,7 +1283,7 @@ static void mesh_foreachScreenFace__mapFunc(void *userData, int index, float *ce
void mesh_foreachScreenFace(ViewContext *vc, 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; ViewContext vc; float pmat[4][4], vmat[4][4]; } data;
- DerivedMesh *dm = editmesh_get_derived_cage(vc->em, CD_MASK_BAREMESH);
+ DerivedMesh *dm = editmesh_get_derived_cage(vc->obedit, vc->em, CD_MASK_BAREMESH);
data.vc= *vc;
data.func = func;
@@ -1648,7 +1648,7 @@ static void draw_dm_bweights(Scene *scene, DerivedMesh *dm)
/* EditMesh drawing routines*/
-static void draw_em_fancy_verts(Scene *scene, View3D *v3d, EditMesh *em, DerivedMesh *cageDM, EditVert *eve_act)
+static void draw_em_fancy_verts(Scene *scene, View3D *v3d, Object *obedit, EditMesh *em, DerivedMesh *cageDM, EditVert *eve_act)
{
int sel;
@@ -1687,7 +1687,7 @@ static void draw_em_fancy_verts(Scene *scene, View3D *v3d, EditMesh *em, Derived
draw_dm_verts(cageDM, sel, eve_act);
}
- if( CHECK_OB_DRAWFACEDOT(scene, v3d, G.obedit->dt) ) {
+ if( CHECK_OB_DRAWFACEDOT(scene, v3d, obedit->dt) ) {
glPointSize(fsize);
glColor4ubv((GLubyte *)fcol);
draw_dm_face_centers(cageDM, sel);
@@ -2083,10 +2083,10 @@ static void draw_em_fancy(Scene *scene, View3D *v3d, Object *ob, EditMesh *em, D
draw_em_fancy_edges(scene, v3d, cageDM, 0, eed_act);
}
- if(ob==G.obedit) {
+ if(em) {
// XXX retopo_matrix_update(v3d);
- draw_em_fancy_verts(scene, v3d, em, cageDM, eve_act);
+ draw_em_fancy_verts(scene, v3d, ob, em, cageDM, eve_act);
if(G.f & G_DRAWNORMALS) {
UI_ThemeColor(TH_NORMAL);
@@ -2354,22 +2354,23 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, Base *base, int dt, int f
static int draw_mesh_object(Scene *scene, View3D *v3d, Base *base, int dt, int flag)
{
Object *ob= base->object;
+ Object *obedit= scene->obedit; // XXX hrumf, see below
Mesh *me= ob->data;
EditMesh *em= me->edit_mesh;
int do_alpha_pass= 0, drawlinked= 0, retval= 0, glsl, check_alpha;
- if(G.obedit && ob!=G.obedit && ob->data==G.obedit->data) {
+ if(obedit && ob!=obedit && ob->data==obedit->data) {
if(ob_get_key(ob));
else drawlinked= 1;
}
- if(ob==G.obedit || drawlinked) {
+ if(ob==obedit || drawlinked) {
DerivedMesh *finalDM, *cageDM;
- if (G.obedit!=ob)
- finalDM = cageDM = editmesh_get_derived_base(em);
+ if (obedit!=ob)
+ finalDM = cageDM = editmesh_get_derived_base(ob, em);
else
- cageDM = editmesh_get_derived_cage_and_final(em, &finalDM,
+ cageDM = editmesh_get_derived_cage_and_final(ob, em, &finalDM,
get_viewedit_datamask());
if(dt>OB_WIRE) {
@@ -2380,10 +2381,10 @@ static int draw_mesh_object(Scene *scene, View3D *v3d, Base *base, int dt, int f
draw_em_fancy(scene, v3d, ob, em, cageDM, finalDM, dt);
- if (G.obedit!=ob && finalDM)
+ if (obedit!=ob && finalDM)
finalDM->release(finalDM);
}
-// else if(!G.obedit && (G.f & G_SCULPTMODE) &&(scene->sculptdata.flags & SCULPT_DRAW_FAST) &&
+// else if(!em && (G.f & G_SCULPTMODE) &&(scene->sculptdata.flags & SCULPT_DRAW_FAST) &&
// OBACT==ob && !sculpt_modifiers_active(ob)) {
// XXX sculptmode_draw_mesh(0);
// }
@@ -2391,7 +2392,7 @@ static int draw_mesh_object(Scene *scene, View3D *v3d, Base *base, int dt, int f
/* don't create boundbox here with mesh_get_bb(), the derived system will make it, puts deformed bb's OK */
if(me->totface<=4 || boundbox_clip(v3d, ob->obmat, (ob->bb)? ob->bb: me->bb)) {
glsl = draw_glsl_material(scene, ob, v3d, dt);
- check_alpha = check_material_alpha(base, ob, glsl);
+ check_alpha = check_material_alpha(base, me, glsl);
if(dt==OB_SOLID || glsl) {
GPU_set_object_materials(v3d, scene, ob, glsl,
@@ -2721,7 +2722,7 @@ static int drawDispList(Scene *scene, View3D *v3d, Base *base, int dt)
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
drawDispListsolid(lb, ob, 0);
}
- if(ob==G.obedit && cu->bevobj==NULL && cu->taperobj==NULL && cu->ext1 == 0.0 && cu->ext2 == 0.0) {
+ if(cu->editnurb && cu->bevobj==NULL && cu->taperobj==NULL && cu->ext1 == 0.0 && cu->ext2 == 0.0) {
cpack(0);
draw_index_wire= 0;
drawDispListwire(lb);
@@ -2844,7 +2845,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, Base *base, Part
if(pars==0) return;
- if(!G.obedit && psys_in_edit_mode(psys)
+ // XXX what logic is this?
+ if(!scene->obedit && psys_in_edit_mode(psys)
&& psys->flag & PSYS_HAIR_DONE && part->draw_as==PART_DRAW_PATH)
return;
@@ -4175,10 +4177,10 @@ static int drawmball(Scene *scene, View3D *v3d, Base *base, int dt)
mb= ob->data;
- if(ob==G.obedit) {
+ if(mb->editelems) {
UI_ThemeColor(TH_WIRE);
if((G.f & G_PICKSEL)==0 ) drawDispList(scene, v3d, base, dt);
- ml= editelems.first;
+ ml= mb->editelems->first;
}
else {
if((base->flag & OB_FROMDUPLI)==0)
@@ -4189,7 +4191,7 @@ static int drawmball(Scene *scene, View3D *v3d, Base *base, int dt)
if(ml==NULL) return 1;
/* in case solid draw, reset wire colors */
- if(ob!=G.obedit && (ob->flag & SELECT)) {
+ if(mb->editelems && (ob->flag & SELECT)) {
if(ob==OBACT) UI_ThemeColor(TH_ACTIVE);
else UI_ThemeColor(TH_SELECT);
}
@@ -4203,7 +4205,7 @@ static int drawmball(Scene *scene, View3D *v3d, Base *base, int dt)
while(ml) {
/* draw radius */
- if(ob==G.obedit) {
+ if(mb->editelems) {
if((ml->flag & SELECT) && (ml->flag & MB_SCALE_RAD)) cpack(0xA0A0F0);
else cpack(0x3030A0);
@@ -4215,7 +4217,7 @@ static int drawmball(Scene *scene, View3D *v3d, Base *base, int dt)
drawcircball(GL_LINE_LOOP, &(ml->x), ml->rad, imat);
/* draw stiffness */
- if(ob==G.obedit) {
+ if(mb->editelems) {
if((ml->flag & SELECT) && !(ml->flag & MB_SCALE_RAD)) cpack(0xA0F0A0);
else cpack(0x30A030);
@@ -4242,7 +4244,8 @@ static void draw_forcefield(Scene *scene, Object *ob)
if(G.f & G_RENDER_SHADOW)
return;
- if(ob!=G.obedit && (ob->flag & SELECT)) {
+ /* XXX why? */
+ if(ob!=scene->obedit && (ob->flag & SELECT)) {
if(ob==OBACT) curcol= TH_ACTIVE;
else curcol= TH_SELECT;
}
@@ -4575,7 +4578,8 @@ static void drawSolidSelect(Scene *scene, View3D *v3d, Base *base)
static void drawWireExtra(Scene *scene, View3D *v3d, Object *ob)
{
- if(ob!=G.obedit && (ob->flag & SELECT)) {
+ // XXX scene->obedit warning
+ if(ob!=scene->obedit && (ob->flag & SELECT)) {
if(ob==OBACT) {
if(ob->flag & OB_FROMGROUP) UI_ThemeColor(TH_GROUP_ACTIVE);
else UI_ThemeColor(TH_ACTIVE);
@@ -4705,7 +4709,8 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
ob= base->object;
- if (ob!=G.obedit) {
+ /* XXX ermfh... */
+ if (ob!=scene->obedit) {
if (ob->restrictflag & OB_RESTRICT_VIEW)
return;
}
@@ -4724,7 +4729,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
/* draw keys? */
if(base==(scene->basact) || (base->flag & (SELECT+BA_WAS_SEL))) {
- if(flag==0 && warning_recursive==0 && ob!=G.obedit) {
+ if(flag==0 && warning_recursive==0 && ob!=scene->obedit) {
if(ob->ipo && ob->ipo->showkey && (ob->ipoflag & OB_DRAWKEY)) {
ListBase elems;
CfraElem *ce;
@@ -4856,7 +4861,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if(ob==OBACT && (G.f & (G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT))) {
if(ob->type==OB_MESH) {
- if(ob==G.obedit);
+ if(ob==scene->obedit);
else {
if(dt<OB_SOLID)
zbufoff= 1;
@@ -4878,7 +4883,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if(dt>=OB_BOUNDBOX ) {
dtx= ob->dtx;
- if(G.obedit==ob) {
+ if(scene->obedit==ob) {
// the only 2 extra drawtypes alowed in editmode
dtx= dtx & (OB_DRAWWIRE|OB_TEXSPACE);
}
@@ -4890,7 +4895,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
/* draw outline for selected solid objects, mesh does itself */
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(dt>OB_WIRE && dt<OB_TEXTURE && ob!=scene->obedit && (flag && DRAW_SCENESET)==0) {
if (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(flag&DRAW_PICKING)) {
drawSolidSelect(scene, v3d, base);
}
@@ -4908,7 +4913,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
case OB_FONT:
cu= ob->data;
if (cu->disp.first==NULL) makeDispListCurveTypes(ob, 0);
- if(ob==G.obedit) {
+ if(cu->editstr) {
tekentextcurs();
if (cu->flag & CU_FAST) {
@@ -4963,7 +4968,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
setlinestyle(0);
- if (getselection(&selstart, &selend) && selboxes) {
+ if (getselection(ob, &selstart, &selend) && selboxes) {
float selboxw;
cpack(0xffffff);
@@ -5002,8 +5007,8 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
/* still needed for curves hidden in other layers. depgraph doesnt handle that yet */
if (cu->disp.first==NULL) makeDispListCurveTypes(ob, 0);
- if(ob==G.obedit) {
- drawnurb(scene, v3d, base, editNurb.first, dt);
+ if(cu->editnurb) {
+ drawnurb(scene, v3d, base, cu->editnurb->first, dt);
}
else if(dt==OB_BOUNDBOX)
draw_bounding_volume(ob);
@@ -5015,13 +5020,17 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
}
break;
case OB_MBALL:
- if(ob==G.obedit)
+ {
+ MetaBall *mb= ob->data;
+
+ if(mb->editelems)
drawmball(scene, v3d, base, dt);
else if(dt==OB_BOUNDBOX)
draw_bounding_volume(ob);
else
empty_object= drawmball(scene, v3d, base, dt);
break;
+ }
case OB_EMPTY:
drawaxes(ob->empty_drawsize, flag, ob->empty_drawtype);
break;
@@ -5049,7 +5058,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if( (warning_recursive==0) &&
(ob->particlesystem.first) &&
(flag & DRAW_PICKING)==0 &&
- (ob!=G.obedit)
+ (ob!=scene->obedit)
) {
ParticleSystem *psys;
if(col || (ob->flag & SELECT)) cpack(0xFFFFFF); /* for visibility, also while wpaint */
@@ -5060,7 +5069,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if(G.f & G_PARTICLEEDIT && ob==OBACT) {
psys= NULL; // XXX PE_get_current(ob);
- if(psys && !G.obedit && psys_in_edit_mode(psys))
+ if(psys && !scene->obedit && psys_in_edit_mode(psys))
draw_particle_edit(scene, v3d, ob, psys, dt);
}
glDepthMask(GL_TRUE);
@@ -5156,10 +5165,10 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
ListBase *list;
/* draw hook center and offset line */
- if(ob!=G.obedit) draw_hooks(ob);
+ if(ob!=scene->obedit) draw_hooks(ob);
/* help lines and so */
- if(ob!=G.obedit && ob->parent && (ob->parent->lay & v3d->lay)) {
+ if(ob!=scene->obedit && ob->parent && (ob->parent->lay & v3d->lay)) {
setlinestyle(3);
glBegin(GL_LINES);
glVertex3fv(ob->obmat[3]);
@@ -5317,14 +5326,14 @@ static void bbs_mesh_solid__drawCenter(void *userData, int index, float *cent, f
}
/* two options, facecolors or black */
-static int bbs_mesh_solid_EM(Scene *scene, View3D *v3d, DerivedMesh *dm, int facecol)
+static int bbs_mesh_solid_EM(Scene *scene, View3D *v3d, Object *ob, DerivedMesh *dm, int facecol)
{
cpack(0);
if (facecol) {
dm->drawMappedFaces(dm, bbs_mesh_solid__setSolidDrawOptions, (void*)(intptr_t) 1, 0);
- if( CHECK_OB_DRAWFACEDOT(scene, v3d, G.obedit->dt) ) {
+ if( CHECK_OB_DRAWFACEDOT(scene, v3d, ob->dt) ) {
glPointSize(UI_GetThemeValuef(TH_FACEDOT_SIZE));
bglBegin(GL_POINTS);
@@ -5373,14 +5382,15 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, Object *ob)
switch( ob->type) {
case OB_MESH:
- if(ob==G.obedit) {
- Mesh *me= ob->data;
- EditMesh *em= me->edit_mesh;
- DerivedMesh *dm = editmesh_get_derived_cage(em, CD_MASK_BAREMESH);
+ {
+ Mesh *me= ob->data;
+ EditMesh *em= me->edit_mesh;
+ if(em) {
+ DerivedMesh *dm = editmesh_get_derived_cage(ob, em, CD_MASK_BAREMESH);
EM_init_index_arrays(em, 1, 1, 1);
- em_solidoffs= bbs_mesh_solid_EM(scene, v3d, dm, scene->selectmode & SCE_SELECT_FACE);
+ em_solidoffs= bbs_mesh_solid_EM(scene, v3d, ob, dm, scene->selectmode & SCE_SELECT_FACE);
bglPolygonOffset(v3d->dist, 1.0);
@@ -5399,7 +5409,7 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, Object *ob)
EM_free_index_arrays();
}
else bbs_mesh_solid(ob);
-
+ }
break;
case OB_CURVE:
case OB_SURF:
@@ -5421,7 +5431,7 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, Object *ob, int
int glsl;
if(me->edit_mesh)
- edm= editmesh_get_derived_base(me->edit_mesh);
+ edm= editmesh_get_derived_base(ob, me->edit_mesh);
else
dm = mesh_get_derived_final(ob, CD_MASK_BAREMESH);
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 232b9d9d974..a70a6ab8fd8 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -351,10 +351,6 @@ static int view3d_context(const bContext *C, const bContextDataMember *member, b
return 1;
}
- else if(member == CTX_data_edit_object) {
- CTX_data_pointer_set(result, G.obedit);
- return 1;
- }
return 0;
}
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index ad18f6675a3..90840533d55 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -370,7 +370,7 @@ static void drawgrid(ARegion *ar, View3D *v3d)
}
-static void drawfloor(View3D *v3d)
+static void drawfloor(Scene *scene, View3D *v3d)
{
float vert[3], grid;
int a, gridlines, emphasise;
@@ -381,7 +381,7 @@ static void drawfloor(View3D *v3d)
if(v3d->gridlines<3) return;
- if(v3d->zbuf && G.obedit) glDepthMask(0); // for zbuffer-select
+ if(v3d->zbuf && scene->obedit) glDepthMask(0); // for zbuffer-select
gridlines= v3d->gridlines/2;
grid= gridlines*v3d->grid;
@@ -489,7 +489,7 @@ static void drawfloor(View3D *v3d)
glEnd();
}
- if(v3d->zbuf && G.obedit) glDepthMask(1);
+ if(v3d->zbuf && scene->obedit) glDepthMask(1);
}
@@ -740,7 +740,7 @@ static void draw_selected_name(Scene *scene, Object *ob, View3D *v3d)
char *name= NULL;
/* show name of active bone too (if possible) */
- if(ob==G.obedit) {
+ if(arm->edbo) {
// XXX EditBone *ebo;
// for (ebo=G.edbo.first; ebo; ebo=ebo->next){
// if ((ebo->flag & BONE_ACTIVE) && (ebo->layer & arm->layer)) {
@@ -1055,7 +1055,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d)
#endif
if(G.f & G_VERTEXPAINT || G.f & G_WEIGHTPAINT || G.f & G_TEXTUREPAINT);
- else if(G.obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
+ else if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
else {
v3d->flag &= ~V3D_NEEDBACKBUFDRAW;
return;
@@ -1081,7 +1081,6 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d)
#endif
if(v3d->drawtype > OB_WIRE) v3d->zbuf= TRUE;
-// ar->win_swap &= ~WIN_BACK_OK;
glDisable(GL_DITHER);
@@ -1872,7 +1871,7 @@ void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d)
v3d->gridview= v3d->grid;
if(v3d->view==0 || v3d->persp!=0) {
- drawfloor(v3d);
+ drawfloor(scene, v3d);
if(v3d->persp==2) {
if(scene->world) {
if(scene->world->mode & WO_STARS) {
@@ -1927,21 +1926,21 @@ void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d)
draw_dupli_objects(scene, ar, v3d, base);
}
if((base->flag & SELECT)==0) {
- if(base->object!=G.obedit)
+ if(base->object!=scene->obedit)
draw_object(scene, ar, v3d, base, 0);
}
}
}
// retopo= retopo_mesh_check() || retopo_curve_check();
-// sculptparticle= (G.f & (G_SCULPTMODE|G_PARTICLEEDIT)) && !G.obedit;
+// sculptparticle= (G.f & (G_SCULPTMODE|G_PARTICLEEDIT)) && !obedit;
if(retopo)
view3d_update_depths(ar, v3d);
/* draw selected and editmode */
for(base= scene->base.first; base; base= base->next) {
if(v3d->lay & base->lay) {
- if (base->object==G.obedit || ( base->flag & SELECT) )
+ if (base->object==scene->obedit || ( base->flag & SELECT) )
draw_object(scene, ar, v3d, base, 0);
}
}
@@ -1954,7 +1953,7 @@ void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d)
if(G.moving) {
// BIF_drawConstraint();
-// if(G.obedit || (G.f & G_PARTICLEEDIT))
+// if(obedit || (G.f & G_PARTICLEEDIT))
// BIF_drawPropCircle(); // only editmode and particles have proportional edit
// BIF_drawSnap();
}
@@ -2025,7 +2024,7 @@ void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d)
// XXX addafterqueue(ar->win, BACKBUFDRAW, 1);
}
// test for backbuf select
- if(G.obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) {
+ if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) {
v3d->flag |= V3D_NEEDBACKBUFDRAW;
// XXX if(afterqtest(ar->win, BACKBUFDRAW)==0) {
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index a5b9e483201..a5ea2a83b77 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -755,6 +755,7 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
View3D *v3d= sa->spacedata.first;
Scene *scene= CTX_data_scene(C);
Object *ob= OBACT;
+ Object *obedit= CTX_data_edit_object(C);
float size, min[3], max[3], afm[3];
int ok=0;
@@ -780,7 +781,7 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
}
- if(G.obedit) {
+ if(obedit) {
// XXX ok = minmax_verts(min, max); /* only selected */
}
else if(ob && (ob->flag & OB_POSEMODE)) {
@@ -1452,12 +1453,12 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
ARegion *ar= CTX_wm_region(C);
View3D *v3d= (View3D *)CTX_wm_space_data(C);
float dx, dy, fz, *fp = NULL, dvec[3], oldcurs[3];
- short mx, my, lr_click=0, mval[2];
- short ctrl= 0; // XXX
+ short mx, my, mval[2];
+// short ctrl= 0; // XXX
fp= give_cursor(scene, v3d);
- if(G.obedit && ctrl) lr_click= 1;
+// if(obedit && ctrl) lr_click= 1;
VECCOPY(oldcurs, fp);
mx= event->x - ar->winrct.xmin;
@@ -1484,12 +1485,12 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
fp[2]= (v3d->persinv[0][2]*dx + v3d->persinv[1][2]*dy+ v3d->persinv[2][2]*fz)-v3d->ofs[2];
}
- if(lr_click) {
- // XXX if(G.obedit->type==OB_MESH) add_click_mesh();
- // else if ELEM(G.obedit->type, OB_CURVE, OB_SURF) addvert_Nurb(0);
- // else if (G.obedit->type==OB_ARMATURE) addvert_armature();
- VECCOPY(fp, oldcurs);
- }
+// if(lr_click) {
+ // XXX if(obedit->type==OB_MESH) add_click_mesh();
+ // else if ELEM(obedit->type, OB_CURVE, OB_SURF) addvert_Nurb(0);
+ // else if (obedit->type==OB_ARMATURE) addvert_armature();
+// VECCOPY(fp, oldcurs);
+// }
// XXX notifier for scene */
ED_region_tag_redraw(ar);
@@ -1812,7 +1813,7 @@ void viewmoveNDOF(Scene *scene, View3D *v3d, int mode)
v3d->view = 0;
//printf("passing here \n");
//
- if (G.obedit==NULL && ob && !(ob->flag & OB_POSEMODE)) {
+ if (scene->obedit==NULL && ob && !(ob->flag & OB_POSEMODE)) {
use_sel = 1;
}
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index 06eb00d75c8..3de551a516a 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -73,6 +73,7 @@
#include "BIF_gl.h"
#include "BIF_glutil.h"
+#include "BIF_transform.h"
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
@@ -5445,7 +5446,7 @@ static void do_view3d_buttons(bContext *C, void *arg, int event)
em->selectmode= SCE_SELECT_VERTEX;
scene->selectmode= em->selectmode;
EM_selectmode_set(em);
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, G.obedit);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
ED_undo_push(C, "Selectmode Set: Vertex");
}
break;
@@ -5459,7 +5460,7 @@ static void do_view3d_buttons(bContext *C, void *arg, int event)
}
scene->selectmode= em->selectmode;
EM_selectmode_set(em);
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, G.obedit);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
ED_undo_push(C, "Selectmode Set: Edge");
}
break;
@@ -5473,7 +5474,7 @@ static void do_view3d_buttons(bContext *C, void *arg, int event)
}
scene->selectmode= em->selectmode;
EM_selectmode_set(em);
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, G.obedit);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
ED_undo_push(C, "Selectmode Set: Face");
}
break;
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 33ac9a64968..8fa54c7c7ad 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -569,10 +569,10 @@ static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short m
for (ebone=G.edbo.first; ebone; ebone=ebone->next) {
VECCOPY(vec, ebone->head);
- Mat4MulVecfl(G.obedit->obmat, vec);
+ Mat4MulVecfl(vc->obedit->obmat, vec);
project_short(vc->ar, vc->v3d, vec, sco1);
VECCOPY(vec, ebone->tail);
- Mat4MulVecfl(G.obedit->obmat, vec);
+ Mat4MulVecfl(vc->obedit->obmat, vec);
project_short(vc->ar, vc->v3d, vec, sco2);
didpoint= 0;
@@ -649,7 +649,7 @@ static void do_lasso_select_node(short mcords[][2], short moves, short select)
void view3d_lasso_select(ViewContext *vc, short mcords[][2], short moves, short select)
{
- if(G.obedit==NULL) {
+ if(vc->obedit==NULL) {
if(FACESEL_PAINT_TEST)
do_lasso_select_facemode(vc, mcords, moves, select);
else if(G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT))
@@ -659,13 +659,13 @@ void view3d_lasso_select(ViewContext *vc, short mcords[][2], short moves, short
else
do_lasso_select_objects(vc, mcords, moves, select);
}
- else if(G.obedit->type==OB_MESH) {
+ else if(vc->obedit->type==OB_MESH) {
do_lasso_select_mesh(vc, mcords, moves, select);
- } else if(G.obedit->type==OB_CURVE || G.obedit->type==OB_SURF)
+ } else if(vc->obedit->type==OB_CURVE || vc->obedit->type==OB_SURF)
do_lasso_select_curve(vc, mcords, moves, select);
- else if(G.obedit->type==OB_LATTICE)
+ else if(vc->obedit->type==OB_LATTICE)
do_lasso_select_lattice(vc, mcords, moves, select);
- else if(G.obedit->type==OB_ARMATURE)
+ else if(vc->obedit->type==OB_ARMATURE)
do_lasso_select_armature(vc, mcords, moves, select);
BIF_undo_push("Lasso select");
@@ -934,7 +934,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter)
/* This block uses the control key to make the object selected by its center point rather then its contents */
/* XXX later on, in editmode do not activate */
- if(G.obedit==NULL && obcenter) {
+ if(vc.obedit==NULL && obcenter) {
/* note; shift+alt goes to group-flush-selecting */
/* XXX solve */
@@ -1088,7 +1088,7 @@ static void mouse_select(bContext *C, short *mval, short extend, short obcenter)
/* so, do we have something selected? */
if(basact) {
- if(G.obedit) {
+ if(vc.obedit) {
/* only do select */
deselectall_except(scene, basact);
ED_base_object_select(basact, BA_SELECT);
@@ -1287,6 +1287,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
Scene *scene= CTX_data_scene(C);
ScrArea *sa= CTX_wm_area(C);
View3D *v3d= sa->spacedata.first;
+ Object *obedit= CTX_data_edit_object(C);
rcti rect;
Base *base;
MetaElem *ml;
@@ -1305,29 +1306,29 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
rect.xmax= RNA_int_get(op->ptr, "xmax");
rect.ymax= RNA_int_get(op->ptr, "ymax");
- if(G.obedit==NULL && (FACESEL_PAINT_TEST)) {
+ if(obedit==NULL && (FACESEL_PAINT_TEST)) {
// XXX face_borderselect();
return OPERATOR_FINISHED;
}
- else if(G.obedit==NULL && (G.f & G_PARTICLEEDIT)) {
+ else if(obedit==NULL && (G.f & G_PARTICLEEDIT)) {
// XXX PE_borderselect();
return OPERATOR_FINISHED;
}
- if(G.obedit) {
- if(G.obedit->type==OB_MESH) {
- Mesh *me= G.obedit->data;
+ if(obedit) {
+ if(obedit->type==OB_MESH) {
+ Mesh *me= obedit->data;
vc.em= me->edit_mesh;
do_mesh_box_select(&vc, &rect, (val==LEFTMOUSE));
// if (EM_texFaceCheck())
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, G.obedit);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
}
- else if(ELEM(G.obedit->type, OB_CURVE, OB_SURF)) {
+ else if(ELEM(obedit->type, OB_CURVE, OB_SURF)) {
do_nurbs_box_select(&vc, &rect, val==LEFTMOUSE);
// allqueue(REDRAWVIEW3D, 0);
}
- else if(G.obedit->type==OB_MBALL) {
+ else if(obedit->type==OB_MBALL) {
hits= view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect);
ml= NULL; // XXX editelems.first;
@@ -1350,7 +1351,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
ml= ml->next;
}
}
- else if(G.obedit->type==OB_ARMATURE) {
+ else if(obedit->type==OB_ARMATURE) {
EditBone *ebone;
/* clear flag we use to detect point was affected */
@@ -1403,7 +1404,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
}
}
- else if(G.obedit->type==OB_LATTICE) {
+ else if(obedit->type==OB_LATTICE) {
do_lattice_box_select(&vc, &rect, val==LEFTMOUSE);
}
}
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index 1949db88d28..1986203f839 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -1018,10 +1018,10 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b
glPushName(-1);
code= 1;
- if(G.obedit && G.obedit->type==OB_MBALL) {
+ if(vc->obedit && vc->obedit->type==OB_MBALL) {
draw_object(scene, ar, v3d, BASACT, DRAW_PICKING|DRAW_CONSTCOLOR);
}
- else if ((G.obedit && G.obedit->type==OB_ARMATURE)) {
+ else if ((vc->obedit && vc->obedit->type==OB_ARMATURE)) {
draw_object(scene, ar, v3d, BASACT, DRAW_PICKING|DRAW_CONSTCOLOR);
}
else {
@@ -1139,13 +1139,13 @@ void initlocalview(Scene *scene, ARegion *ar, View3D *v3d)
ok= 0;
}
else {
- if(G.obedit) {
- minmax_object(G.obedit, min, max);
+ if(scene->obedit) {
+ minmax_object(scene->obedit, min, max);
ok= 1;
BASACT->lay |= locallay;
- G.obedit->lay= BASACT->lay;
+ scene->obedit->lay= BASACT->lay;
}
else {
base= FIRSTBASE;
@@ -1203,7 +1203,7 @@ void initlocalview(Scene *scene, ARegion *ar, View3D *v3d)
if( base->lay & locallay ) {
base->lay-= locallay;
if(base->lay==0) base->lay= v3d->layact;
- if(base->object != G.obedit) base->flag |= SELECT;
+ if(base->object != scene->obedit) base->flag |= SELECT;
base->object->lay= base->lay;
}
base= base->next;
@@ -1260,7 +1260,7 @@ void endlocalview(Scene *scene, ScrArea *sa)
if( base->lay & locallay ) {
base->lay-= locallay;
if(base->lay==0) base->lay= v3d->layact;
- if(base->object != G.obedit) {
+ if(base->object != scene->obedit) {
base->flag |= SELECT;
base->object->flag |= SELECT;
}