diff options
Diffstat (limited to 'source/blender/editors')
32 files changed, 474 insertions, 454 deletions
diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c index 985d57ed31f..336bc6f48ed 100644 --- a/source/blender/editors/animation/anim_deps.c +++ b/source/blender/editors/animation/anim_deps.c @@ -99,7 +99,7 @@ void ED_update_for_newframe(const bContext *C, int mute) /* XXX future: do all windows */ scene_update_for_newframe(scene, screen_view3d_layers(screen)); /* BKE_scene.h */ - //if ( (CFRA>1) && (!mute) && (G.scene->audio.flag & AUDIO_SCRUB)) + //if ( (CFRA>1) && (!mute) && (scene->audio.flag & AUDIO_SCRUB)) // audiostream_scrub( CFRA ); /* 3d window, preview */ diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index ac41a63760d..dce5fd90eb2 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -110,7 +110,10 @@ #include "mydevice.h" #endif // XXX resolve these old dependencies! +/* ****************************************** */ +/* note for Joshua: add_ipo() wants scene pointer to init the view2d 'cur' for + the ipo data, which restores views. Needs to be resolved nicer? */ /* ************************************************** */ /* LOCAL TYPES AND DEFINES */ @@ -230,13 +233,13 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha if (conchan) { if ((conchan->ipo==NULL) && (add)) - conchan->ipo= add_ipo("CoIpo", ID_CO); + conchan->ipo= add_ipo(NULL, "CoIpo", ID_CO); return conchan->ipo; } } else { if ((achan->ipo==NULL) && (add)) - achan->ipo= add_ipo("ActIpo", blocktype); + achan->ipo= add_ipo(NULL, "ActIpo", blocktype); return achan->ipo; } } @@ -261,7 +264,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha if (con) { if ((con->ipo==NULL) && (add)) - con->ipo= add_ipo("CoIpo", ID_CO); + con->ipo= add_ipo(NULL, "CoIpo", ID_CO); return con->ipo; } } @@ -275,14 +278,14 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha if (conchan) { if ((conchan->ipo==NULL) && (add)) - conchan->ipo= add_ipo("CoIpo", ID_CO); + conchan->ipo= add_ipo(NULL, "CoIpo", ID_CO); return conchan->ipo; } } } else if (blocktype==ID_OB) { if ((ob->ipo==NULL) && (add)) - ob->ipo= add_ipo("ObIpo", ID_OB); + ob->ipo= add_ipo(NULL, "ObIpo", ID_OB); return ob->ipo; } else if (blocktype==ID_KE) { @@ -290,7 +293,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha if (key) { if ((key->ipo==NULL) && (add)) - key->ipo= add_ipo("KeyIpo", ID_KE); + key->ipo= add_ipo(NULL, "KeyIpo", ID_KE); return key->ipo; } return NULL; @@ -303,7 +306,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha FluidsimSettings *fss= fluidmd->fss; if ((fss->ipo==NULL) && (add)) - fss->ipo= add_ipo("FluidsimIpo", ID_FLUIDSIM); + fss->ipo= add_ipo(NULL, "FluidsimIpo", ID_FLUIDSIM); return fss->ipo; } } @@ -313,7 +316,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha if (psys) { if ((psys->part->ipo==NULL) && (add)) - psys->part->ipo= add_ipo("ParticleIpo", ID_PA); + psys->part->ipo= add_ipo(NULL, "ParticleIpo", ID_PA); return psys->part->ipo; } return NULL; @@ -325,7 +328,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha Material *ma= (Material *)from; if ((ma->ipo==NULL) && (add)) - ma->ipo= add_ipo("MatIpo", ID_MA); + ma->ipo= add_ipo(NULL, "MatIpo", ID_MA); return ma->ipo; } break; @@ -334,7 +337,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha Tex *tex= (Tex *)from; if ((tex->ipo==NULL) && (add)) - tex->ipo= add_ipo("TexIpo", ID_TE); + tex->ipo= add_ipo(NULL, "TexIpo", ID_TE); return tex->ipo; } break; @@ -343,7 +346,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha Sequence *seq= (Sequence *)from; /* note, sequence is mimicing Id */ if ((seq->ipo==NULL) && (add)) - seq->ipo= add_ipo("SeqIpo", ID_SEQ); + seq->ipo= add_ipo(NULL, "SeqIpo", ID_SEQ); //update_seq_ipo_rect(seq); // XXX return seq->ipo; } @@ -353,7 +356,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha Curve *cu= (Curve *)from; if ((cu->ipo==NULL) && (add)) - cu->ipo= add_ipo("CuIpo", ID_CU); + cu->ipo= add_ipo(NULL, "CuIpo", ID_CU); return cu->ipo; } break; @@ -362,7 +365,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha World *wo= (World *)from; if ((wo->ipo==NULL) && (add)) - wo->ipo= add_ipo("WoIpo", ID_WO); + wo->ipo= add_ipo(NULL, "WoIpo", ID_WO); return wo->ipo; } break; @@ -371,7 +374,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha Lamp *la= (Lamp *)from; if ((la->ipo==NULL) && (add)) - la->ipo= add_ipo("LaIpo", ID_LA); + la->ipo= add_ipo(NULL, "LaIpo", ID_LA); return la->ipo; } break; @@ -380,7 +383,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha Camera *ca= (Camera *)from; if ((ca->ipo==NULL) && (add)) - ca->ipo= add_ipo("CaIpo", ID_CA); + ca->ipo= add_ipo(NULL, "CaIpo", ID_CA); return ca->ipo; } break; @@ -390,7 +393,7 @@ Ipo *verify_ipo(ID *from, short blocktype, char actname[], char constname[], cha bSound *snd= (bSound *)from; if ((snd->ipo==NULL) && (add)) - snd->ipo= add_ipo("SndIpo", ID_SO); + snd->ipo= add_ipo(NULL, "SndIpo", ID_SO); return snd->ipo; #endif // depreceated } @@ -1088,7 +1091,7 @@ short insertkey (ID *id, int blocktype, char *actname, char *constname, int adrc /* ancient time-offset cruft */ //if ( (ob->ipoflag & OB_OFFS_OB) && (give_timeoffset(ob)) ) { // /* actually frametofloat calc again! */ - // cfra-= give_timeoffset(ob)*G.scene->r.framelen; + // cfra-= give_timeoffset(ob)*scene->r.framelen; //} } @@ -1197,7 +1200,7 @@ short deletekey (ID *id, int blocktype, char *actname, char *constname, int adrc /* ancient time-offset cruft */ //if ( (ob->ipoflag & OB_OFFS_OB) && (give_timeoffset(ob)) ) { // /* actually frametofloat calc again! */ - // cfra-= give_timeoffset(ob)*G.scene->r.framelen; + // cfra-= give_timeoffset(ob)*scene->r.framelen; //} } diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index e2fae03ac29..37ed825f0db 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -39,8 +39,9 @@ struct EditVert; struct EditEdge; struct EditFace; struct ImBuf; +struct Scene; -float *give_cursor(Scene *scene, View3D *v3d); +float *give_cursor(struct Scene *scene, View3D *v3d); void initgrabz(struct View3D *v3d, float x, float y, float z); void window_to_3d(struct ARegion *ar, struct View3D *v3d, float *vec, short mx, short my); @@ -67,7 +68,7 @@ void nurbs_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData void lattice_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userData, struct BPoint *bp, int x, int y), void *userData); int view3d_test_clipping(struct View3D *v3d, float *vec); -void view3d_align_axis_to_vector(struct View3D *v3d, int axisidx, float vec[3]); +void view3d_align_axis_to_vector(struct Scene *scene, struct View3D *v3d, int axisidx, float vec[3]); /* backbuffer select and draw support */ struct ImBuf *view3d_read_backbuf(struct ViewContext *vc, short xmin, short ymin, short xmax, short ymax); diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index 61bfc8b8a0f..a572013e849 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -623,11 +623,13 @@ MTFace *get_active_mtface(EditMesh *em, EditFace **act_efa, MCol **mcol, int slo return NULL; } -void make_tfaces(Mesh *me) +static void make_tfaces(Object *ob) { + Mesh *me= ob->data; + if(!me->mtface) { if(me->mr) { - multires_add_layer(me, &me->mr->fdata, CD_MTFACE, + multires_add_layer(ob, &me->mr->fdata, CD_MTFACE, CustomData_number_of_layers(&me->fdata, CD_MTFACE)); } else { @@ -1312,7 +1314,7 @@ void set_texturepaint(Scene *scene) /* toggle */ G.f |= G_TEXTUREPAINT; if(me->mtface==NULL) - make_tfaces(me); + make_tfaces(ob); brush_check_exists(&scene->toolsettings->imapaint.brush); GPU_paint_set_mipmap(0); @@ -1373,9 +1375,9 @@ static void texpaint_tri_weights(Object *ob, float *v1, float *v2, float *v3, fl } /* compute uv coordinates of mouse in face */ -void texpaint_pick_uv(Object *ob, Mesh *mesh, unsigned int faceindex, short *xy, float *uv) +void texpaint_pick_uv(Scene *scene, Object *ob, Mesh *mesh, unsigned int faceindex, short *xy, float *uv) { - DerivedMesh *dm = mesh_get_derived_final(ob, CD_MASK_BAREMESH); + DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); int *index = dm->getFaceDataArray(dm, CD_ORIGINDEX); MTFace *tface = dm->getFaceDataArray(dm, CD_MTFACE), *tf; int numfaces = dm->getNumFaces(dm), a; diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index 85fdc5d8ad5..9104e133cc6 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -1973,7 +1973,6 @@ static void *editMesh_to_undoMesh(void *emv) // um->retopo_mode= scene->toolsettings->retopo_mode; { - Mesh *me= NULL; // XXX Multires *mr= NULL; // XXX old-style multires UndoMesh *prev= NULL; // XXX undo_editmode_get_prev(obedit); diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index 1833682b19e..91e1997a8f5 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -334,7 +334,7 @@ static void make_fgon(EditMesh *em, int make) else { EM_fgon_flags(em); // redo flags and indices for fgons -// XXX DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// XXX DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Make FGon"); } } @@ -600,7 +600,7 @@ void addfaces_from_edgenet(EditMesh *em) EM_select_flush(em); BIF_undo_push("Add faces"); -// XXX DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// XXX DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); } void addedgeface_mesh(EditMesh *em) @@ -632,7 +632,7 @@ void addedgeface_mesh(EditMesh *em) EM_select_edge(eed, 1); BIF_undo_push("Add edge"); - // XXX DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); + // XXX DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); return; } else if(amount > 4) { @@ -734,11 +734,11 @@ void addedgeface_mesh(EditMesh *em) BIF_undo_push("Add face"); } -// XXX DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// XXX DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); } -void adduplicate_mesh(Object *obedit, EditMesh *em) +void adduplicate_mesh(Scene *scene, Object *obedit, EditMesh *em) { if(multires_test()) return; @@ -755,8 +755,8 @@ void adduplicate_mesh(Object *obedit, EditMesh *em) * This shouldn't be necessary, derived queries should be * automatically building this data if invalid. Or something. */ -// XXX DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); - object_handle_update(obedit); + DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); + object_handle_update(scene, obedit); // XXX BIF_TransformSetUndo("Add Duplicate"); // initTransform(TFM_TRANSLATION, CTX_NO_PET); @@ -773,13 +773,13 @@ static int confirm_objectExists(Scene *scene, Object *obedit, Mesh **me, float m if(obedit==NULL) { /* add_object actually returns an object ! :-) But it also stores the added object struct in - G.scene->basact->object (BASACT->object) */ + scene->basact->object (BASACT->object) */ // XXX add_object_draw(OB_MESH); obedit= BASACT->object; - where_is_object(obedit); + where_is_object(scene, obedit); make_editMesh(scene, obedit); newob= 1; @@ -1245,7 +1245,7 @@ void add_primitiveMesh(Scene *scene, View3D *v3d, Object *obedit, EditMesh *em, char *undostr="Add Primitive"; char *name=NULL; -// if(G.scene->id.lib) return; +// if(scene->id.lib) return; /* this function also comes from an info window */ // XXX if ELEM(curarea->spacetype, SPACE_VIEW3D, SPACE_INFO); else return; @@ -1396,7 +1396,7 @@ void add_primitiveMesh(Scene *scene, View3D *v3d, Object *obedit, EditMesh *em, if(type!=0 && type!=13) righthandfaces(em, 1); /* otherwise monkey has eyes in wrong direction... */ -// XXX DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// XXX DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); /* if a new object was created, it stores it in Mesh, for reload original data and undo */ if ( !(newob) || U.flag & USER_ADD_EDITMODE) { diff --git a/source/blender/editors/mesh/editmesh_loop.c b/source/blender/editors/mesh/editmesh_loop.c index 13cc90f3e2d..bb41accc10d 100644 --- a/source/blender/editors/mesh/editmesh_loop.c +++ b/source/blender/editors/mesh/editmesh_loop.c @@ -383,7 +383,7 @@ void CutEdgeloop(Object *obedit, EditMesh *em, int numcuts) EM_selectmode_set(em); } -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); return; } @@ -547,7 +547,7 @@ static float seg_intersect(EditEdge *e, CutCurve *c, int len, char mode, struct int i; //threshold = 0.000001; /*tolerance for vertex intersection*/ -// XXX threshold = G.scene->toolsettings->select_thresh / 100; +// XXX threshold = scene->toolsettings->select_thresh / 100; /* Get screen coords of verts */ scr = BLI_ghash_lookup(gh, e->v1); diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 018df499dcc..375ebde5f52 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -119,15 +119,15 @@ void EM_automerge(int update) { // XXX int len; -// if ((G.scene->automerge) && +// if ((scene->automerge) && // (obedit && obedit->type==OB_MESH) && // (((Mesh*)obedit->data)->mr==NULL) // ) { -// len = removedoublesflag(1, 1, G.scene->toolsettings->doublimit); +// len = removedoublesflag(1, 1, scene->toolsettings->doublimit); // if (len) { // G.totvert -= len; /* saves doing a countall */ // if (update) { -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); // } // } // } @@ -670,7 +670,7 @@ int facegroup_select(EditMesh *em, short mode) unsigned int deselcount=0; short ok=0; - float thresh=0; // XXX G.scene->toolsettings->select_thresh; + float thresh=0; // XXX scene->toolsettings->select_thresh; for(efa= em->faces.first; efa; efa= efa->next) { if (!efa->h) { @@ -814,7 +814,7 @@ static int edgegroup_select__internal(EditMesh *em, short mode) unsigned int deselcount=0; short ok=0; - float thresh=0; // XXX G.scene->toolsettings->select_thresh; + float thresh=0; // XXX scene->toolsettings->select_thresh; for(eed= em->edges.first; eed; eed= eed->next) { if (!eed->h) { @@ -1043,7 +1043,7 @@ int vertgroup_select(EditMesh *em, short mode) unsigned int deselcount=0; short ok=0; - float thresh=0; // XXX G.scene->toolsettings->select_thresh; + float thresh=0; // XXX scene->toolsettings->select_thresh; for(eve= em->verts.first; eve; eve= eve->next) { if (!eve->h) { @@ -1343,7 +1343,7 @@ void EM_mesh_copy_edge(EditMesh *em, short type) } if (change) { -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Copy Edge Attribute"); } @@ -1472,7 +1472,7 @@ void EM_mesh_copy_face(EditMesh *em, short type) } if (change) { -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); if (type==3) { // XXX allqueue(REDRAWIMAGE, 0); } @@ -1606,7 +1606,7 @@ void EM_mesh_copy_face_layer(EditMesh *em, short type) } if (change) { -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Copy Face Layer"); } @@ -2006,7 +2006,7 @@ static void mouse_mesh_loop(ViewContext *vc) } } - switch (0) { // XXX G.scene->toolsettings->edge_mode) { + switch (0) { // XXX scene->toolsettings->edge_mode) { case EDGE_MODE_TAG_SEAM: G.f |= G_DRAWSEAMS; break; @@ -2021,7 +2021,7 @@ static void mouse_mesh_loop(ViewContext *vc) break; } -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); } } @@ -2425,7 +2425,7 @@ void hide_mesh(EditMesh *em, int swap) G.totedgesel= G.totfacesel= G.totvertsel= 0; // if(EM_texFaceCheck()) - // DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); + // DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Hide"); } @@ -2463,7 +2463,7 @@ void reveal_mesh(EditMesh *em) EM_selectmode_flush(em); // if (EM_texFaceCheck()) -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Reveal"); } @@ -3431,7 +3431,7 @@ void Vertex_Menu(EditMesh *em) switch(ret) { case 1: -// XXX notice("Removed %d Vertices", removedoublesflag(1, 0, G.scene->toolsettings->doublimit)); +// XXX notice("Removed %d Vertices", removedoublesflag(1, 0, scene->toolsettings->doublimit)); BIF_undo_push("Remove Doubles"); break; case 2: @@ -3452,7 +3452,7 @@ void Vertex_Menu(EditMesh *em) break; } /* some items crashed because this is in the original W menu but not here. should really manage this better */ -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); } @@ -3499,16 +3499,16 @@ void Edge_Menu(EditMesh *em) case 11: // editmesh_mark_sharp(em, 1); BIF_undo_push("Mark Sharp"); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); break; case 12: // editmesh_mark_sharp(em, 0); BIF_undo_push("Clear Sharp"); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); break; } /* some items crashed because this is in the original W menu but not here. should really manage this better */ -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); } void Face_Menu(EditMesh *em) @@ -3525,7 +3525,7 @@ void Face_Menu(EditMesh *em) { case 1: // flip_editnormals(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Flip Normals"); break; case 2: @@ -3540,7 +3540,7 @@ void Face_Menu(EditMesh *em) case 5: /* Quads to Tris */ // convert_to_triface(em, 0); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); break; case 6: /* Tris to Quads */ // join_triangles(em); @@ -3570,7 +3570,7 @@ void Face_Menu(EditMesh *em) break; } /* some items crashed because this is in the original W menu but not here. should really manage this better */ -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); } @@ -3781,7 +3781,7 @@ void righthandfaces(EditMesh *em, int select) /* makes faces righthand turning * recalc_editnormals(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); waitcursor(0); } @@ -3856,7 +3856,7 @@ void faceselect_align_view_to_selected(View3D *v3d, Mesh *me, int axis) if (totselected == 0) error("No faces selected."); else - view3d_align_axis_to_vector(v3d, axis, norm); + view3d_align_axis_to_vector(NULL, v3d, axis, norm); } /* helper for below, to survive non-uniform scaled objects */ @@ -3901,7 +3901,7 @@ void editmesh_align_view_to_selected(Object *obedit, EditMesh *em, View3D *v3d, } } - view3d_align_axis_to_vector(v3d, axis, norm); + view3d_align_axis_to_vector(NULL, v3d, axis, norm); } else if (nselverts>2) { float cent[3]; @@ -3926,7 +3926,7 @@ void editmesh_align_view_to_selected(Object *obedit, EditMesh *em, View3D *v3d, } Mat4Mul3Vecfl(obedit->obmat, norm); - view3d_align_axis_to_vector(v3d, axis, norm); + view3d_align_axis_to_vector(NULL, v3d, axis, norm); } else if (nselverts==2) { /* Align view to edge (or 2 verts) */ EditVert *eve, *leve= NULL; @@ -3943,7 +3943,7 @@ void editmesh_align_view_to_selected(Object *obedit, EditMesh *em, View3D *v3d, } } Mat4Mul3Vecfl(obedit->obmat, norm); - view3d_align_axis_to_vector(v3d, axis, norm); + view3d_align_axis_to_vector(NULL, v3d, axis, norm); } else if (nselverts==1) { /* Align view to vert normal */ EditVert *eve; @@ -3957,7 +3957,7 @@ void editmesh_align_view_to_selected(Object *obedit, EditMesh *em, View3D *v3d, } } Mat4Mul3Vecfl(obedit->obmat, norm); - view3d_align_axis_to_vector(v3d, axis, norm); + view3d_align_axis_to_vector(NULL, v3d, axis, norm); } } @@ -4049,7 +4049,7 @@ void vertexsmooth(Object *obedit, EditMesh *em) if(eve->f & SELECT) { if(eve->f1) { -// XXX if (G.scene->toolsettings->editbutflag & B_MESH_X_MIRROR) { +// XXX if (scene->toolsettings->editbutflag & B_MESH_X_MIRROR) { // eve_mir= editmesh_get_x_mirror_vert(obedit, em, eve->co); // } @@ -4089,7 +4089,7 @@ void vertexsmooth(Object *obedit, EditMesh *em) recalc_editnormals(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Vertex Smooth"); } @@ -4135,7 +4135,7 @@ void vertexnoise(Object *obedit, EditMesh *em) } recalc_editnormals(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Vertex Noise"); } @@ -4194,7 +4194,7 @@ void vertices_to_sphere(Scene *scene, View3D *v3d, Object *obedit, EditMesh *em) } recalc_editnormals(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("To Sphere"); } diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 1d5e2b24d17..024ef433f1b 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -596,6 +596,7 @@ void hashvert_flag(EditMesh *em, int flag) /* generic extern called extruder */ void extrude_mesh(Object *obedit, EditMesh *em) { + Scene *scene= NULL; // XXX CTX! float nor[3]= {0.0, 0.0, 0.0}; short nr, transmode= 0; @@ -647,8 +648,8 @@ void extrude_mesh(Object *obedit, EditMesh *em) * This shouldn't be necessary, derived queries should be * automatically building this data if invalid. Or something. */ -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); - object_handle_update(obedit); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); + object_handle_update(scene, obedit); /* individual faces? */ // BIF_TransformSetUndo("Extrude"); @@ -686,7 +687,7 @@ void split_mesh(EditMesh *em) waitcursor(0); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Split"); @@ -722,7 +723,7 @@ void extrude_repeat_mesh(View3D *v3d, Object *obedit, EditMesh *em, int steps, f EM_fgon_flags(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Extrude Repeat"); } @@ -751,7 +752,7 @@ void spin_mesh(View3D *v3d, Object *obedit, EditMesh *em, int steps, float degr, phi= degr*M_PI/360.0; phi/= steps; -// if(G.scene->toolsettings->editbutflag & B_CLOCKWISE) phi= -phi; +// if(scene->toolsettings->editbutflag & B_CLOCKWISE) phi= -phi; if(dvec) { n[0]= v3d->viewinv[1][0]; @@ -774,7 +775,7 @@ void spin_mesh(View3D *v3d, Object *obedit, EditMesh *em, int steps, float degr, Mat3MulMat3(tmat,cmat,bmat); Mat3MulMat3(bmat,imat,tmat); -// if(mode==0) if(G.scene->toolsettings->editbutflag & B_KEEPORIG) adduplicateflag(1); +// if(mode==0) if(scene->toolsettings->editbutflag & B_KEEPORIG) adduplicateflag(1); ok= 1; for(a=0;a<steps;a++) { @@ -807,7 +808,7 @@ void spin_mesh(View3D *v3d, Object *obedit, EditMesh *em, int steps, float degr, EM_fgon_flags(em); - // DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); + // DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); if(dvec==NULL) BIF_undo_push("Spin"); @@ -1062,7 +1063,7 @@ void delete_mesh(Object *obedit, EditMesh *em) EM_fgon_flags(em); // redo flags and indices for fgons -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push(str); } @@ -1145,7 +1146,7 @@ void fill_mesh(EditMesh *em) waitcursor(0); EM_select_flush(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Fill"); } @@ -1574,7 +1575,7 @@ static void fill_quad_double_adj_path(EditMesh *em, EditFace *efa, struct GHash if (ctrl) hold->e1->f2 |= EDGEINNER; facecopy(em, efa,hold); - //if(G.scene->toolsettings->editbutflag & B_AUTOFGON) { + //if(scene->toolsettings->editbutflag & B_AUTOFGON) { // hold->e1->h |= EM_FGON; //} // Make side faces @@ -1734,7 +1735,7 @@ static void fill_quad_double_adj_inner(EditMesh *em, EditFace *efa, struct GHash hold->e2->f2 |= EDGEINNER; facecopy(em, efa,hold); - //if(G.scene->toolsettings->editbutflag & B_AUTOFGON) { + //if(scene->toolsettings->editbutflag & B_AUTOFGON) { // hold->e1->h |= EM_FGON; //} // Add Fill Quads (if # cuts > 1) @@ -1750,7 +1751,7 @@ static void fill_quad_double_adj_inner(EditMesh *em, EditFace *efa, struct GHash hold->e4->f2 |= EDGEINNER; facecopy(em, efa,hold); - //if(G.scene->toolsettings->editbutflag & B_AUTOFGON) { + //if(scene->toolsettings->editbutflag & B_AUTOFGON) { // hold->e1->h |= EM_FGON; //} } @@ -1957,7 +1958,7 @@ static void fill_quad_triple(EditMesh *em, EditFace *efa, struct GHash *gh, int // Also Make inner quad hold = addfacelist(em, verts[1][numcuts/2],verts[1][(numcuts/2)+1],verts[2][numcuts/2],verts[0][(numcuts/2)+1],NULL,NULL); hold->e3->f2 |= EDGEINNER; - //if(G.scene->toolsettings->editbutflag & B_AUTOFGON) { + //if(scene->toolsettings->editbutflag & B_AUTOFGON) { // hold->e3->h |= EM_FGON; //} facecopy(em, efa,hold); @@ -1966,7 +1967,7 @@ static void fill_quad_triple(EditMesh *em, EditFace *efa, struct GHash *gh, int // Make inner tri hold = addfacelist(em, verts[1][(numcuts/2)+1],verts[2][(numcuts/2)+1],verts[0][(numcuts/2)+1],NULL,NULL,NULL); hold->e2->f2 |= EDGEINNER; - //if(G.scene->toolsettings->editbutflag & B_AUTOFGON) { + //if(scene->toolsettings->editbutflag & B_AUTOFGON) { // hold->e2->h |= EM_FGON; //} facecopy(em, efa,hold); @@ -2526,7 +2527,7 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut } } -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); // Now for each face in the mesh we need to figure out How many edges were cut // and which filling method to use for that face for(ef = em->faces.first;ef;ef = ef->next) { @@ -2602,7 +2603,7 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut (ef->e2->f & flag && ef->e4->f & flag)) { fill_quad_double_op(em, ef, gh, numcuts); }else{ - switch(0) { // XXX G.scene->toolsettings->cornertype) { + switch(0) { // XXX scene->toolsettings->cornertype) { case 0: fill_quad_double_adj_path(em, ef, gh, numcuts); break; case 1: fill_quad_double_adj_inner(em, ef, gh, numcuts); break; case 2: fill_quad_double_adj_fan(em, ef, gh, numcuts); break; @@ -2729,7 +2730,7 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut } recalc_editnormals(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); } static int count_selected_edges(EditEdge *ed) @@ -3079,7 +3080,7 @@ void beauty_fill(EditMesh *em) EM_select_flush(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Beauty Fill"); } @@ -3153,7 +3154,7 @@ static int compareFaceAttribs(EditMesh *em, EditFace *f1, EditFace *f2, EditEdge /*Test to see if the per-face attributes for the joining edge match within limit*/ MTFace *tf1, *tf2; unsigned int *col1, *col2; - short i,attrok=0, flag = 0, /* XXX G.scene->toolsettings->editbutflag,*/ fe1[2], fe2[2]; + short i,attrok=0, flag = 0, /* XXX scene->toolsettings->editbutflag,*/ fe1[2], fe2[2]; tf1 = CustomData_em_get(&em->fdata, f1->data, CD_MTFACE); tf2 = CustomData_em_get(&em->fdata, f2->data, CD_MTFACE); @@ -3234,7 +3235,7 @@ void join_triangles(EditMesh *em) EVPtr *efaa = NULL; float *creases = NULL; float measure; /*Used to set tolerance*/ - float limit = 0.0f; // XXX G.scene->toolsettings->jointrilimit; + float limit = 0.0f; // XXX scene->toolsettings->jointrilimit; int i, ok, totedge=0, totseledge=0, complexedges, vindex[4]; /*test for multi-resolution data*/ @@ -3311,9 +3312,9 @@ void join_triangles(EditMesh *em) the python scripts bundled with Blender releases. */ -// XXX if(G.scene->toolsettings->editbutflag & B_JOINTRIA_SHARP && eed->sharp); /*do nothing*/ -// else if(G.scene->toolsettings->editbutflag & B_JOINTRIA_MAT && efaa[0]->mat_nr != efaa[1]->mat_nr); /*do nothing*/ -// else if(((G.scene->toolsettings->editbutflag & B_JOINTRIA_UV) || (G.scene->toolsettings->editbutflag & B_JOINTRIA_VCOL)) && +// XXX if(scene->toolsettings->editbutflag & B_JOINTRIA_SHARP && eed->sharp); /*do nothing*/ +// else if(scene->toolsettings->editbutflag & B_JOINTRIA_MAT && efaa[0]->mat_nr != efaa[1]->mat_nr); /*do nothing*/ +// else if(((scene->toolsettings->editbutflag & B_JOINTRIA_UV) || (scene->toolsettings->editbutflag & B_JOINTRIA_VCOL)) && compareFaceAttribs(em, efaa[0], efaa[1], eed); // XXX == 0); /*do nothing*/ // else{ measure = measure_facepair(v1, v2, v3, v4, limit); @@ -3384,7 +3385,7 @@ void join_triangles(EditMesh *em) if(edsortblock) MEM_freeN(edsortblock); EM_selectmode_flush(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Convert Triangles to Quads"); } @@ -3482,7 +3483,7 @@ void edge_flip(EditMesh *em) MEM_freeN(efaar); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Flip Triangle Edges"); @@ -3719,7 +3720,7 @@ void edge_rotate_selected(EditMesh *em, int dir) /* flush selected vertices (again) to edges/faces */ EM_select_flush(em); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Rotate Edge"); } @@ -4144,7 +4145,7 @@ int EdgeSlide(EditMesh *em, short immediate, float imperc) } - if (uvlay_tot) { // XXX && (G.scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT)) { + if (uvlay_tot) { // XXX && (scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT)) { int maxnum = 0; uvarray = MEM_callocN( uvlay_tot * sizeof(GHash *), "SlideUVs Array"); suv_last = slideuvs = MEM_callocN( uvlay_tot * (numadded+1) * sizeof(SlideUv), "SlideUVs"); /* uvLayers * verts */ @@ -4341,7 +4342,7 @@ int EdgeSlide(EditMesh *em, short immediate, float imperc) tempev = editedge_getOtherVert((perc>=0)?tempsv->up:tempsv->down, ev); VecLerpf(ev->co, tempsv->origvert.co, tempev->co, fabs(perc)); - if (0) { // XXX G.scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { + if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) { suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev ); if (suv && suv->fuv_list && suv->uv_up && suv->uv_down) { @@ -4370,7 +4371,7 @@ int EdgeSlide(EditMesh *em, short immediate, float imperc) if(newlen < 0.0) {newlen = 0.0;} if(flip == 0) { VecLerpf(ev->co, editedge_getOtherVert(tempsv->down,ev)->co, editedge_getOtherVert(tempsv->up,ev)->co, fabs(newlen)); - if (0) { // XXX G.scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { + if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { /* dont do anything if no UVs */ for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) { suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev ); @@ -4387,7 +4388,7 @@ int EdgeSlide(EditMesh *em, short immediate, float imperc) } else{ VecLerpf(ev->co, editedge_getOtherVert(tempsv->up,ev)->co, editedge_getOtherVert(tempsv->down,ev)->co, fabs(newlen)); - if (0) { // XXX G.scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { + if (0) { // XXX scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) { /* dont do anything if no UVs */ for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) { suv = BLI_ghash_lookup( uvarray[uvlay_idx], ev ); @@ -4543,7 +4544,7 @@ int EdgeSlide(EditMesh *em, short immediate, float imperc) } else { draw = 0; } -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); } @@ -4563,7 +4564,7 @@ int EdgeSlide(EditMesh *em, short immediate, float imperc) if(!immediate) EM_automerge(0); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); // scrarea_queue_winredraw(curarea); //BLI_ghash_free(edgesgh, freeGHash, NULL); @@ -4571,7 +4572,7 @@ int EdgeSlide(EditMesh *em, short immediate, float imperc) BLI_linklist_free(vertlist,NULL); BLI_linklist_free(edgelist,NULL); - if (uvlay_tot) { // XXX && (G.scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT)) { + if (uvlay_tot) { // XXX && (scene->toolsettings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT)) { for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) { BLI_ghash_free(uvarray[uvlay_idx], NULL, NULL); } @@ -4599,20 +4600,20 @@ int EdgeLoopDelete(EditMesh *em) /* temporal flag setting so we keep UVs when deleting edge loops, * this is a bit of a hack but it works how you would want in almost all cases */ - // short uvcalc_flag_orig = 0; // XXX G.scene->toolsettings->uvcalc_flag; - // G.scene->toolsettings->uvcalc_flag |= UVCALC_TRANSFORM_CORRECT; + // short uvcalc_flag_orig = 0; // XXX scene->toolsettings->uvcalc_flag; + // scene->toolsettings->uvcalc_flag |= UVCALC_TRANSFORM_CORRECT; if(!EdgeSlide(em, 1, 1)) { return 0; } /* restore uvcalc flag */ - // G.scene->toolsettings->uvcalc_flag = uvcalc_flag_orig; + // scene->toolsettings->uvcalc_flag = uvcalc_flag_orig; EM_select_more(em); removedoublesflag(em, 1,0, 0.001); EM_select_flush(em); - // DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); + // DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); return 1; } @@ -4705,7 +4706,7 @@ void mesh_set_smooth_faces(EditMesh *em, short event) efa= efa->next; } -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); if(event==1) BIF_undo_push("Set Smooth"); else if(event==0) BIF_undo_push("Set Solid"); @@ -4754,10 +4755,10 @@ void mesh_rip(EditMesh *em) float projectMat[4][4], vec[3], dist, mindist; // viewMat[4][4], XXX short doit= 1, mval[2]; // XXX ,propmode,prop; -// XXX propmode = G.scene->prop_mode; -// G.scene->prop_mode = 0; -// prop = G.scene->proportional; -// G.scene->proportional = 0; +// XXX propmode = scene->prop_mode; +// scene->prop_mode = 0; +// prop = scene->proportional; +// scene->proportional = 0; /* select flush... vertices are important */ EM_selectmode_set(em); @@ -4945,8 +4946,8 @@ void mesh_rip(EditMesh *em) // initTransform(TFM_TRANSLATION, 0); // Transform(); -// G.scene->prop_mode = propmode; -// XXX G.scene->proportional = prop; +// scene->prop_mode = propmode; +// XXX scene->proportional = prop; } void shape_propagate(Scene *scene, Object *obedit, EditMesh *em) @@ -5033,7 +5034,7 @@ void shape_copy_from_lerp(EditMesh *em, KeyBlock* thisBlock, KeyBlock* fromBlock } } sprintf(str,"Blending at %d%c MMB to Copy at 100%c",(int)(perc*100),'%','%'); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); // headerprint(str); // force_draw(0); @@ -5633,7 +5634,7 @@ int collapseEdges(EditMesh *em) freecollections(&allcollections); removedoublesflag(em, 1, 0, MERGELIMIT); /*get rid of this!*/ -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); // if (EM_texFaceCheck()) @@ -5693,7 +5694,7 @@ int merge_target(EditMesh *em, int target, int uvmerge) collapseuvs(em, NULL); } -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); return removedoublesflag(em, 1, 0, MERGELIMIT); @@ -5858,7 +5859,7 @@ void pathselect(EditMesh *em) MEM_freeN(previous); BLI_heap_free(heap, NULL); EM_select_flush(em); - // DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); + // DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); // if (EM_texFaceCheck()) } @@ -5895,7 +5896,7 @@ void region_to_loop(EditMesh *em) em->selectmode = SCE_SELECT_EDGE; EM_selectmode_set(em); - // DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); + // DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); // if (EM_texFaceCheck()) @@ -6054,7 +6055,7 @@ void loop_to_region(EditMesh *em) } freecollections(&allcollections); -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); // if (EM_texFaceCheck()) @@ -6126,7 +6127,7 @@ void mesh_rotate_uvs(EditMesh *em) } if (change) { -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Rotate UV face"); } @@ -6209,7 +6210,7 @@ void mesh_mirror_uvs(EditMesh *em) } if (change) { -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Mirror UV face"); } @@ -6259,7 +6260,7 @@ void mesh_rotate_colors(EditMesh *em) } if (change) { -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Rotate Color face"); } @@ -6308,7 +6309,7 @@ void mesh_mirror_colors(EditMesh *em) } if (change) { -// DAG_object_flush_update(G.scene, obedit, OB_RECALC_DATA); +// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA); BIF_undo_push("Mirror Color face"); } } diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 94730be507c..29c11e69a67 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -950,12 +950,12 @@ static int thread_break(void) return G.afbreek; } -static ScrArea *biggest_image_area(void) +static ScrArea *biggest_image_area(bScreen *screen) { ScrArea *sa, *big= NULL; int size, maxsize= 0; - for(sa= G.curscreen->areabase.first; sa; sa= sa->next) { + for(sa= screen->areabase.first; sa; sa= sa->next) { if(sa->spacetype==SPACE_IMAGE) { size= sa->winx*sa->winy; if(sa->winx > 10 && sa->winy > 10 && size > maxsize) { @@ -1004,8 +1004,9 @@ void objects_bake_render(Scene *scene, short event, char **error_msg) } if(event>0) { + bScreen *screen= NULL; // XXX CTX Render *re= RE_NewRender("_Bake View_"); - ScrArea *area= biggest_image_area(); + ScrArea *area= biggest_image_area(screen); ListBase threads; BakeRender bkr; int timer=0, tot; // XXX, sculptmode= G.f & G_SCULPTMODE; diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index c3451506979..ba344b5d67d 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -255,15 +255,15 @@ void add_object_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menu exit_paint_modes(); // XXX if (obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* freedata, and undo */ - ob= add_object(type); + ob= add_object(scene, type); // ED_base_object_activate(C, BASACT); - base_init_from_view3d(BASACT, v3d); + base_init_from_view3d(BASACT, v3d, scene); /* only undo pushes on objects without editmode... */ if(type==OB_EMPTY) BIF_undo_push("Add Empty"); else if(type==OB_LAMP) { BIF_undo_push("Add Lamp"); - reshadeall_displist(); /* only frees */ + reshadeall_displist(scene); /* only frees */ } else if(type==OB_LATTICE) BIF_undo_push("Add Lattice"); else if(type==OB_CAMERA) BIF_undo_push("Add Camera"); @@ -287,7 +287,7 @@ void add_objectLamp(Scene *scene, View3D *v3d, short type) if(scene->obedit==NULL) { // XXX get from context add_object_draw(scene, v3d, OB_LAMP); - base_init_from_view3d(BASACT, v3d); + base_init_from_view3d(BASACT, v3d, scene); } la = BASACT->object->data; @@ -353,7 +353,7 @@ void delete_obj(Scene *scene, View3D *v3d, int ok) } } - if(islamp) reshadeall_displist(); /* only frees displist */ + if(islamp) reshadeall_displist(scene); /* only frees displist */ // XXX redraw_test_buttons(OBACT); allqueue(REDRAWVIEW3D, 0); @@ -775,7 +775,7 @@ void add_hook(Scene *scene, View3D *v3d, int mode) if(mode==1) { Base *base= BASACT, *newbase; - ob= add_object(OB_EMPTY); + ob= add_object(scene, OB_EMPTY); /* set layers OK */ newbase= BASACT; newbase->lay= base->lay; @@ -814,7 +814,7 @@ void add_hook(Scene *scene, View3D *v3d, int mode) /* vert x (obmat x hook->imat) x hook->obmat x ob->imat */ /* (parentinv ) */ - where_is_object(ob); + where_is_object(scene, ob); Mat4Invert(ob->imat, ob->obmat); /* apparently this call goes from right to left... */ @@ -831,7 +831,7 @@ void add_hook(Scene *scene, View3D *v3d, int mode) obedit_hook_select(obedit, hmd); } else if(mode==6) { /* clear offset */ - where_is_object(ob); /* ob is hook->parent */ + where_is_object(scene, ob); /* ob is hook->parent */ Mat4Invert(ob->imat, ob->obmat); /* this call goes from right to left... */ @@ -845,7 +845,7 @@ void add_hook(Scene *scene, View3D *v3d, int mode) /* use this when the loc/size/rot of the parent has changed but the children should stay in the same place * apply-size-rot or object center for eg */ -static void ignore_parent_tx( Object *ob ) +static void ignore_parent_tx(Scene *scene, Object *ob ) { Object workob; Object *ob_child; @@ -854,7 +854,7 @@ static void ignore_parent_tx( Object *ob ) for (ob_child=G.main->object.first; ob_child; ob_child=ob_child->id.next) { if (ob_child->parent == ob) { apply_obmat(ob_child); - what_does_parent(ob_child, &workob); + what_does_parent(scene, ob_child, &workob); Mat4Invert(ob_child->parentinv, workob.obmat); } } @@ -1618,7 +1618,7 @@ void reset_slowparents(Scene *scene, View3D *v3d) if(base->object->parent) { if(base->object->partype & PARSLOW) { base->object->partype -= PARSLOW; - where_is_object(base->object); + where_is_object(scene, base->object); base->object->partype |= PARSLOW; } } @@ -1756,7 +1756,7 @@ void make_vertex_parent(Scene *scene, Object *obedit, View3D *v3d) ob->par3= v3-1; /* inverse parent matrix */ - what_does_parent(ob, &workob); + what_does_parent(scene, ob, &workob); Mat4Invert(ob->parentinv, workob.obmat); } else { @@ -1764,7 +1764,7 @@ void make_vertex_parent(Scene *scene, Object *obedit, View3D *v3d) ob->par1= v1-1; /* inverse parent matrix */ - what_does_parent(ob, &workob); + what_does_parent(scene, ob, &workob); Mat4Invert(ob->parentinv, workob.obmat); } } @@ -1837,7 +1837,7 @@ void make_proxy(Scene *scene) Base *newbase, *oldbase= BASACT; char name[32]; - newob= add_object(OB_EMPTY); + newob= add_object(scene, OB_EMPTY); if(gob) strcpy(name, gob->id.name+2); else @@ -1904,12 +1904,12 @@ oldcode() // XXX create_vgroups_from_armature(base->object, par); base->object->partype= PAROBJECT; - what_does_parent(base->object); + what_does_parent(scene, base->object); Mat4One (base->object->parentinv); base->object->partype= mode; } else - what_does_parent(base->object, &workob); + what_does_parent(scene, base->object, &workob); Mat4Invert(base->object->parentinv, workob.obmat); } } @@ -1951,6 +1951,7 @@ static int test_parent_loop(Object *par, Object *ob) static int make_parent_exec(bContext *C, wmOperator *op) { + Scene *scene= CTX_data_scene(C); Object *par= CTX_data_active_object(C); bPoseChannel *pchan= NULL; int partype= RNA_enum_get(op->ptr, "type"); @@ -1966,7 +1967,7 @@ static int make_parent_exec(bContext *C, wmOperator *op) if((cu->flag & CU_PATH)==0) { cu->flag |= CU_PATH|CU_FOLLOW; - makeDispListCurveTypes(par, 0); /* force creation of path data */ + makeDispListCurveTypes(scene, par, 0); /* force creation of path data */ } else cu->flag |= CU_FOLLOW; @@ -2010,7 +2011,7 @@ static int make_parent_exec(bContext *C, wmOperator *op) } /* calculate inverse parent matrix */ - what_does_parent(ob, &workob); + what_does_parent(scene, ob, &workob); Mat4Invert(ob->parentinv, workob.obmat); ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA; @@ -2515,8 +2516,8 @@ void docenter(Scene *scene, View3D *v3d, int centermode) base->object->loc[1]+= centn[1]; base->object->loc[2]+= centn[2]; - where_is_object(base->object); - ignore_parent_tx(base->object); + where_is_object(scene, base->object); + ignore_parent_tx(scene, base->object); /* other users? */ ob= G.main->object.first; @@ -2536,8 +2537,8 @@ void docenter(Scene *scene, View3D *v3d, int centermode) ob->loc[1]+= centn[1]; ob->loc[2]+= centn[2]; - where_is_object(ob); - ignore_parent_tx(ob); + where_is_object(scene, ob); + ignore_parent_tx(scene, ob); if(tme && (tme->flag & ME_ISDONE)==0) { mvert= tme->mvert; @@ -2632,8 +2633,8 @@ void docenter(Scene *scene, View3D *v3d, int centermode) base->object->loc[1]+= cent[1]; base->object->loc[2]+= cent[2]; - where_is_object(base->object); - ignore_parent_tx(base->object); + where_is_object(scene, base->object); + ignore_parent_tx(scene, base->object); } tot_change++; @@ -2682,8 +2683,8 @@ void docenter(Scene *scene, View3D *v3d, int centermode) // XXX docenter_armature(base->object, centermode); tot_change++; - where_is_object(base->object); - ignore_parent_tx(base->object); + where_is_object(scene, base->object); + ignore_parent_tx(scene, base->object); if(obedit) break; @@ -2780,7 +2781,7 @@ void movetolayer(Scene *scene, View3D *v3d) } } } - if(islamp) reshadeall_displist(); /* only frees */ + if(islamp) reshadeall_displist(scene); /* only frees */ /* warning, active object may be hidden now */ @@ -3312,7 +3313,7 @@ void special_editmenu(Scene *scene, View3D *v3d) } -static void curvetomesh(Object *ob) +static void curvetomesh(Scene *scene, Object *ob) { Curve *cu; DispList *dl; @@ -3321,7 +3322,7 @@ static void curvetomesh(Object *ob) cu= ob->data; dl= cu->disp.first; - if(dl==0) makeDispListCurveTypes(ob, 0); /* force creation */ + if(dl==0) makeDispListCurveTypes(scene, ob, 0); /* force creation */ nurbs_to_mesh(ob); /* also does users */ if (ob->type != OB_MESH) { @@ -3415,7 +3416,7 @@ void convertmenu(Scene *scene, View3D *v3d) G.totmesh++; /* make new mesh data from the original copy */ - dm= mesh_get_derived_final(ob1, CD_MASK_MESH); + dm= mesh_get_derived_final(scene, ob1, CD_MASK_MESH); /* dm= mesh_create_derived_no_deform(ob1, NULL); this was called original (instead of get_derived). man o man why! (ton) */ DM_to_mesh(dm, ob1->data); @@ -3470,18 +3471,18 @@ void convertmenu(Scene *scene, View3D *v3d) } } if (nr==3) { - curvetomesh(ob); + curvetomesh(scene, ob); } } else if(ELEM(ob->type, OB_CURVE, OB_SURF)) { if(nr==1) { - curvetomesh(ob); + curvetomesh(scene, ob); } } else if(ob->type==OB_MBALL) { if(nr==1 || nr == 2) { - ob= find_basis_mball(ob); + ob= find_basis_mball(scene, ob); if(ob->disp.first && !(ob->flag&OB_DONE)) { basedel = base; @@ -4069,7 +4070,7 @@ void copy_attr(Scene *scene, View3D *v3d, short event) cu1->vfontbi= cu->vfontbi; id_us_plus((ID *)cu1->vfontbi); - text_to_curve(base->object, 0); /* needed? */ + text_to_curve(scene, base->object, 0); /* needed? */ strcpy(cu1->family, cu->family); @@ -4371,7 +4372,7 @@ void make_links(Scene *scene, View3D *v3d, short event) obt->ipo= ob->ipo; if(obt->ipo) { id_us_plus((ID *)obt->ipo); - do_ob_ipo(obt); + do_ob_ipo(scene, obt); } } else if(event==6) { @@ -4535,7 +4536,7 @@ static void apply_objects_internal(Scene *scene, View3D *v3d, int apply_scale, i ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0f; /*QuatOne(ob->quat);*/ /* Quats arnt used yet */ - where_is_object(ob); + where_is_object(scene, ob); /* texspace and normals */ BASACT= base; @@ -4565,7 +4566,7 @@ static void apply_objects_internal(Scene *scene, View3D *v3d, int apply_scale, i ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0; /*QuatOne(ob->quat); (not used anymore)*/ - where_is_object(ob); + where_is_object(scene, ob); change = 1; } @@ -4611,7 +4612,7 @@ static void apply_objects_internal(Scene *scene, View3D *v3d, int apply_scale, i ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0; /*QuatOne(ob->quat); (quats arnt used anymore)*/ - where_is_object(ob); + where_is_object(scene, ob); /* texspace and normals */ BASACT= base; @@ -4625,7 +4626,7 @@ static void apply_objects_internal(Scene *scene, View3D *v3d, int apply_scale, i continue; } - ignore_parent_tx(ob); + ignore_parent_tx(scene, ob); } } if (change) { @@ -4663,12 +4664,12 @@ void apply_objects_visual_tx( Scene *scene, View3D *v3d ) for (base= FIRSTBASE; base; base= base->next) { if(TESTBASELIB(v3d, base)) { ob= base->object; - where_is_object(ob); + where_is_object(scene, ob); VECCOPY(ob->loc, ob->obmat[3]); Mat4ToSize(ob->obmat, ob->size); Mat4ToEul(ob->obmat, ob->rot); - where_is_object(ob); + where_is_object(scene, ob); change = 1; } @@ -6243,7 +6244,7 @@ void hookmenu(Scene *scene, View3D *v3d) float *curs = give_cursor(scene, v3d); float bmat[3][3], imat[3][3]; - where_is_object(ob); + where_is_object(scene, ob); Mat3CpyMat4(bmat, ob->obmat); Mat3Inv(imat, bmat); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 62082fbb323..97f45ff05bf 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -400,13 +400,13 @@ ScrArea *area_split(wmWindow *win, bScreen *sc, ScrArea *sa, char dir, float fac /* empty screen, with 1 dummy area without spacedata */ /* uses window size */ -bScreen *screen_add(wmWindow *win, char *name) +bScreen *screen_add(wmWindow *win, Scene *scene, char *name) { bScreen *sc; ScrVert *sv1, *sv2, *sv3, *sv4; sc= alloc_libblock(&G.main->screen, ID_SCR, name); - sc->scene= G.scene; + sc->scene= scene; sc->do_refresh= 1; sv1= screen_addvert(sc, 0, 0); @@ -898,7 +898,7 @@ bScreen *ED_screen_duplicate(wmWindow *win, bScreen *sc) if(sc->full != SCREENNORMAL) return NULL; /* XXX handle this case! */ /* make new empty screen: */ - newsc= screen_add(win, sc->id.name+2); + newsc= screen_add(win, sc->scene, sc->id.name+2); /* copy all data */ screen_copy(newsc, sc); /* set in window */ @@ -1264,7 +1264,7 @@ void ed_screen_fullarea(bContext *C) oldscreen->full = SCREENFULL; - sc= screen_add(CTX_wm_window(C), "temp"); + sc= screen_add(CTX_wm_window(C), CTX_data_scene(C), "temp"); /* timer */ sc->animtimer= oldscreen->animtimer; diff --git a/source/blender/editors/screen/screen_intern.h b/source/blender/editors/screen/screen_intern.h index a4da1e4813f..43a1015562a 100644 --- a/source/blender/editors/screen/screen_intern.h +++ b/source/blender/editors/screen/screen_intern.h @@ -30,13 +30,14 @@ /* internal exports only */ struct wmWindow; +struct Scene; /* area.c */ void area_copy_data (ScrArea *sa1, ScrArea *sa2, int swap_space); void area_newspace(bContext *C, ScrArea *sa, int type); /* screen_edit.c */ -bScreen *screen_add(struct wmWindow *win, char *name); +bScreen *screen_add(struct wmWindow *win, struct Scene *scene, char *name); ScrEdge *screen_findedge(bScreen *sc, ScrVert *v1, ScrVert *v2); ScrArea *area_split(wmWindow *win, bScreen *sc, ScrArea *sa, char dir, float fac); int screen_area_join(bContext *C, bScreen* scr, ScrArea *sa1, ScrArea *sa2); diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 05a038bf236..761ba384c82 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -355,7 +355,7 @@ static int screen_area_rip_op(bContext *C, wmOperator *op) newwin= WM_window_open(C, &rect); /* allocs new screen and adds to newly created window, using window size */ - newsc= screen_add(newwin, sc->id.name+2); + newsc= screen_add(newwin, CTX_data_scene(C), sc->id.name+2); newwin->screen= newsc; /* copy area to new screen */ diff --git a/source/blender/editors/space_buttons/buttons_scene.c b/source/blender/editors/space_buttons/buttons_scene.c index c5b03195017..f278b6379ab 100644 --- a/source/blender/editors/space_buttons/buttons_scene.c +++ b/source/blender/editors/space_buttons/buttons_scene.c @@ -51,9 +51,10 @@ static void render_panel_output(const bContext *C, ARegion *ar) { + uiBlock *block; + Scene *scene= CTX_data_scene(C); //ID *id; int a,b; - uiBlock *block; //char *strp; block= uiBeginBlock(C, ar, "render_panel_output", UI_EMBOSS, UI_HELV); @@ -61,30 +62,30 @@ static void render_panel_output(const bContext *C, ARegion *ar) uiBlockBeginAlign(block); uiDefIconBut(block, BUT, 0, ICON_FILESEL, 10, 190, 20, 20, 0, 0, 0, 0, 0, "Select the directory/name for saving animations"); - uiDefBut(block, TEX,0,"", 31, 190, 279, 20,G.scene->r.pic, 0.0,79.0, 0, 0, "Directory/name to save animations, # characters defines the position and length of frame numbers"); + uiDefBut(block, TEX,0,"", 31, 190, 279, 20,scene->r.pic, 0.0,79.0, 0, 0, "Directory/name to save animations, # characters defines the position and length of frame numbers"); uiDefIconBut(block, BUT,0, ICON_FILESEL, 10, 168, 20, 20, 0, 0, 0, 0, 0, "Select the directory/name for a Backbuf image"); - uiDefBut(block, TEX,0,"", 31, 168, 259, 20,G.scene->r.backbuf, 0.0,79.0, 0, 0, "Image to use as background for rendering"); - uiDefIconButBitS(block, ICONTOG, R_BACKBUF, 0, ICON_CHECKBOX_HLT-1, 290, 168, 20, 20, &G.scene->r.bufflag, 0.0, 0.0, 0, 0, "Enable/Disable use of Backbuf image"); + uiDefBut(block, TEX,0,"", 31, 168, 259, 20,scene->r.backbuf, 0.0,79.0, 0, 0, "Image to use as background for rendering"); + uiDefIconButBitS(block, ICONTOG, R_BACKBUF, 0, ICON_CHECKBOX_HLT-1, 290, 168, 20, 20, &scene->r.bufflag, 0.0, 0.0, 0, 0, "Enable/Disable use of Backbuf image"); uiBlockEndAlign(block); - uiDefButBitI(block, TOG, R_EXTENSION, 0, "Extensions", 10, 142, 100, 20, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Adds filetype extensions to the filename when rendering animations"); + uiDefButBitI(block, TOG, R_EXTENSION, 0, "Extensions", 10, 142, 100, 20, &scene->r.scemode, 0.0, 0.0, 0, 0, "Adds filetype extensions to the filename when rendering animations"); uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_TOUCH, 0, "Touch", 170, 142, 50, 20, &G.scene->r.mode, 0.0, 0.0, 0, 0, "Create an empty file before rendering each frame, remove if cancelled (and empty)"); - uiDefButBitI(block, TOG, R_NO_OVERWRITE, 0, "No Overwrite", 220, 142, 90, 20, &G.scene->r.mode, 0.0, 0.0, 0, 0, "Skip rendering frames when the file exists (image output only)"); + uiDefButBitI(block, TOG, R_TOUCH, 0, "Touch", 170, 142, 50, 20, &scene->r.mode, 0.0, 0.0, 0, 0, "Create an empty file before rendering each frame, remove if cancelled (and empty)"); + uiDefButBitI(block, TOG, R_NO_OVERWRITE, 0, "No Overwrite", 220, 142, 90, 20, &scene->r.mode, 0.0, 0.0, 0, 0, "Skip rendering frames when the file exists (image output only)"); uiBlockEndAlign(block); /* SET BUTTON */ uiBlockBeginAlign(block); - /*XXX id= (ID *)G.scene->set; + /*XXX id= (ID *)scene->set; IDnames_to_pupstring(&strp, NULL, NULL, &(G.main->scene), id, &(G.buts->menunr)); if(strp[0]) uiDefButS(block, MENU, 0, strp, 10, 114, 20, 20, &(G.buts->menunr), 0, 0, 0, 0, "Scene to link as a Set"); MEM_freeN(strp);*/ - if(G.scene->set) { + if(scene->set) { uiBlockSetButLock(block, 1, NULL); - //XXX uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 0, "", 31, 114, 100, 20, &(G.scene->set), "Name of the Set"); + //XXX uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 0, "", 31, 114, 100, 20, &(scene->set), "Name of the Set"); uiBlockClearButLock(block); uiDefIconBut(block, BUT, 0, ICON_X, 132, 114, 20, 20, 0, 0, 0, 0, 0, "Remove Set link"); } else { @@ -93,13 +94,13 @@ static void render_panel_output(const bContext *C, ARegion *ar) uiBlockEndAlign(block); uiBlockBeginAlign(block); - uiDefIconButBitI(block, TOGN, R_FIXED_THREADS, 0, ICON_AUTO, 10, 63, 20, 20, &G.scene->r.mode, 0.0, 0.0, 0, 0, "Automatically set the threads to the number of processors on the system"); - if ((G.scene->r.mode & R_FIXED_THREADS)==0) { + uiDefIconButBitI(block, TOGN, R_FIXED_THREADS, 0, ICON_AUTO, 10, 63, 20, 20, &scene->r.mode, 0.0, 0.0, 0, 0, "Automatically set the threads to the number of processors on the system"); + if ((scene->r.mode & R_FIXED_THREADS)==0) { char thread_str[16]; sprintf(thread_str, " Threads: %d", BLI_system_thread_count()); uiDefBut(block, LABEL, 0, thread_str, 30, 63,80,20, 0, 0, 0, 0, 0, ""); } else { - uiDefButS(block, NUM, 0, "Threads:", 30, 63, 80, 20, &G.scene->r.threads, 1, BLENDER_MAX_THREADS, 0, 0, "Amount of threads for render (takes advantage of multi-core and multi-processor computers)"); + uiDefButS(block, NUM, 0, "Threads:", 30, 63, 80, 20, &scene->r.threads, 1, BLENDER_MAX_THREADS, 0, 0, "Amount of threads for render (takes advantage of multi-core and multi-processor computers)"); } uiBlockEndAlign(block); @@ -113,9 +114,9 @@ static void render_panel_output(const bContext *C, ARegion *ar) #ifdef WITH_OPENEXR uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_EXR_TILE_FILE, 0, "Save Buffers", 72, 31, 120, 19, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Save tiles for all RenderLayers and used SceneNodes to files in the temp directory (saves memory, allows Full Sampling)"); - if(G.scene->r.scemode & R_EXR_TILE_FILE) - uiDefButBitI(block, TOG, R_FULL_SAMPLE, 0, "FullSample", 192, 31, 118, 19, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Saves for every OSA sample the entire RenderLayer results (Higher quality sampling but slower)"); + uiDefButBitI(block, TOG, R_EXR_TILE_FILE, 0, "Save Buffers", 72, 31, 120, 19, &scene->r.scemode, 0.0, 0.0, 0, 0, "Save tiles for all RenderLayers and used SceneNodes to files in the temp directory (saves memory, allows Full Sampling)"); + if(scene->r.scemode & R_EXR_TILE_FILE) + uiDefButBitI(block, TOG, R_FULL_SAMPLE, 0, "FullSample", 192, 31, 118, 19, &scene->r.scemode, 0.0, 0.0, 0, 0, "Saves for every OSA sample the entire RenderLayer results (Higher quality sampling but slower)"); uiBlockEndAlign(block); #endif @@ -123,17 +124,17 @@ static void render_panel_output(const bContext *C, ARegion *ar) 72, 10, 120, 19, &G.displaymode, 0.0, (float)R_DISPLAYWIN, 0, 0, "Sets render output display"); /* Dither control */ - uiDefButF(block, NUM,0, "Dither:", 10,89,100,19, &G.scene->r.dither_intensity, 0.0, 2.0, 0, 0, "The amount of dithering noise present in the output image (0.0 = no dithering)"); + uiDefButF(block, NUM,0, "Dither:", 10,89,100,19, &scene->r.dither_intensity, 0.0, 2.0, 0, 0, "The amount of dithering noise present in the output image (0.0 = no dithering)"); /* Toon shading buttons */ uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_EDGE, 0,"Edge", 115, 89, 60, 20, &G.scene->r.mode, 0, 0, 0, 0, "Enable Toon Edge-enhance"); + uiDefButBitI(block, TOG, R_EDGE, 0,"Edge", 115, 89, 60, 20, &scene->r.mode, 0, 0, 0, 0, "Enable Toon Edge-enhance"); //XXX uiDefBlockBut(block, edge_render_menu, NULL, "Edge Settings", 175, 89, 135, 20, "Display Edge settings"); uiBlockEndAlign(block); uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_NO_TEX, 0, "Disable Tex", 115, 63, 75, 20, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Disables Textures for render"); - uiDefButBitI(block, TOG, R_FREE_IMAGE, 0, "Free Tex Images", 210, 63, 100, 20, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Frees all Images used by Textures after each render"); + uiDefButBitI(block, TOG, R_NO_TEX, 0, "Disable Tex", 115, 63, 75, 20, &scene->r.scemode, 0.0, 0.0, 0, 0, "Disables Textures for render"); + uiDefButBitI(block, TOG, R_FREE_IMAGE, 0, "Free Tex Images", 210, 63, 100, 20, &scene->r.scemode, 0.0, 0.0, 0, 0, "Frees all Images used by Textures after each render"); uiBlockEndAlign(block); uiEndBlock(C, block); @@ -147,6 +148,7 @@ static void do_bake_func(bContext *C, void *unused_v, void *unused_p) static void render_panel_bake(const bContext *C, ARegion *ar) { uiBlock *block; + Scene *scene= CTX_data_scene(C); uiBut *but; block= uiBeginBlock(C, ar, "render_panel_bake", UI_EMBOSS, UI_HELV); @@ -157,45 +159,45 @@ static void render_panel_bake(const bContext *C, ARegion *ar) uiButSetFunc(but, do_bake_func, NULL, NULL); uiBlockBeginAlign(block); - uiDefButBitS(block, TOG, R_BAKE_TO_ACTIVE, 0, "Selected to Active", 10,120,190,20,&G.scene->r.bake_flag, 0.0, 0, 0, 0, "Bake shading on the surface of selected objects to the active object"); - uiDefButF(block, NUM, 0, "Dist:", 10,100,95,20,&G.scene->r.bake_maxdist, 0.0, 1000.0, 1, 0, "Maximum distance from active object to other object (in blender units)"); - uiDefButF(block, NUM, 0, "Bias:", 105,100,95,20,&G.scene->r.bake_biasdist, 0.0, 1000.0, 1, 0, "Bias towards faces further away from the object (in blender units)"); + uiDefButBitS(block, TOG, R_BAKE_TO_ACTIVE, 0, "Selected to Active", 10,120,190,20,&scene->r.bake_flag, 0.0, 0, 0, 0, "Bake shading on the surface of selected objects to the active object"); + uiDefButF(block, NUM, 0, "Dist:", 10,100,95,20,&scene->r.bake_maxdist, 0.0, 1000.0, 1, 0, "Maximum distance from active object to other object (in blender units)"); + uiDefButF(block, NUM, 0, "Bias:", 105,100,95,20,&scene->r.bake_biasdist, 0.0, 1000.0, 1, 0, "Bias towards faces further away from the object (in blender units)"); uiBlockEndAlign(block); - if(G.scene->r.bake_mode == RE_BAKE_NORMALS) + if(scene->r.bake_mode == RE_BAKE_NORMALS) uiDefButS(block, MENU, 0, "Normal Space %t|Camera %x0|World %x1|Object %x2|Tangent %x3", - 10,70,190,20, &G.scene->r.bake_normal_space, 0, 0, 0, 0, "Choose normal space for baking"); - else if(G.scene->r.bake_mode == RE_BAKE_AO || G.scene->r.bake_mode == RE_BAKE_DISPLACEMENT) { - uiDefButBitS(block, TOG, R_BAKE_NORMALIZE, 0, "Normalized", 10,70,190,20, &G.scene->r.bake_flag, 0.0, 0, 0, 0, - G.scene->r.bake_mode == RE_BAKE_AO ? + 10,70,190,20, &scene->r.bake_normal_space, 0, 0, 0, 0, "Choose normal space for baking"); + else if(scene->r.bake_mode == RE_BAKE_AO || scene->r.bake_mode == RE_BAKE_DISPLACEMENT) { + uiDefButBitS(block, TOG, R_BAKE_NORMALIZE, 0, "Normalized", 10,70,190,20, &scene->r.bake_flag, 0.0, 0, 0, 0, + scene->r.bake_mode == RE_BAKE_AO ? "Bake ambient occlusion normalized, without taking into acount material settings": "Normalized displacement value to fit the 'Dist' range" ); } uiDefButS(block, MENU, 0, "Quad Split Order%t|Quad Split Auto%x0|Quad Split A (0,1,2) (0,2,3)%x1|Quad Split B (1,2,3) (1,3,0)%x2", - 10,10,190,20, &G.scene->r.bake_quad_split, 0, 0, 0, 0, "Method to divide quads (use A or B for external applications that use a fixed order)"); + 10,10,190,20, &scene->r.bake_quad_split, 0, 0, 0, 0, "Method to divide quads (use A or B for external applications that use a fixed order)"); #if 0 uiBlockBeginAlign(block); - uiDefButBitS(block, TOG, R_BAKE_OSA, 0, "OSA", 10,120,190,20, &G.scene->r.bake_flag, 0, 0, 0, 0, "Enables Oversampling (Anti-aliasing)"); - uiDefButS(block, ROW,0,"5", 10,100,50,20,&G.scene->r.bake_osa,2.0,5.0, 0, 0, "Sets oversample level to 5"); - uiDefButS(block, ROW,0,"8", 60,100,45,20,&G.scene->r.bake_osa,2.0,8.0, 0, 0, "Sets oversample level to 8"); - uiDefButS(block, ROW,0,"11", 105,100,45,20,&G.scene->r.bake_osa,2.0,11.0, 0, 0, "Sets oversample level to 11"); - uiDefButS(block, ROW,0,"16", 150,100,50,20,&G.scene->r.bake_osa,2.0,16.0, 0, 0, "Sets oversample level to 16"); + uiDefButBitS(block, TOG, R_BAKE_OSA, 0, "OSA", 10,120,190,20, &scene->r.bake_flag, 0, 0, 0, 0, "Enables Oversampling (Anti-aliasing)"); + uiDefButS(block, ROW,0,"5", 10,100,50,20,&scene->r.bake_osa,2.0,5.0, 0, 0, "Sets oversample level to 5"); + uiDefButS(block, ROW,0,"8", 60,100,45,20,&scene->r.bake_osa,2.0,8.0, 0, 0, "Sets oversample level to 8"); + uiDefButS(block, ROW,0,"11", 105,100,45,20,&scene->r.bake_osa,2.0,11.0, 0, 0, "Sets oversample level to 11"); + uiDefButS(block, ROW,0,"16", 150,100,50,20,&scene->r.bake_osa,2.0,16.0, 0, 0, "Sets oversample level to 16"); #endif uiBlockBeginAlign(block); - uiDefButS(block, ROW,0,"Full Render", 210,170,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_ALL, 0, 0, ""); - uiDefButS(block, ROW,0,"Ambient Occlusion",210,150,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_AO, 0, 0, ""); - uiDefButS(block, ROW,0,"Shadow", 210,130,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_SHADOW, 0, 0, ""); - uiDefButS(block, ROW,0,"Normals", 210,110,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_NORMALS, 0, 0, ""); - uiDefButS(block, ROW,0,"Textures", 210,90,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_TEXTURE, 0, 0, ""); - uiDefButS(block, ROW,0,"Displacement", 210,70,120,20,&G.scene->r.bake_mode, 1.0, RE_BAKE_DISPLACEMENT, 0, 0, ""); + uiDefButS(block, ROW,0,"Full Render", 210,170,120,20,&scene->r.bake_mode, 1.0, RE_BAKE_ALL, 0, 0, ""); + uiDefButS(block, ROW,0,"Ambient Occlusion",210,150,120,20,&scene->r.bake_mode, 1.0, RE_BAKE_AO, 0, 0, ""); + uiDefButS(block, ROW,0,"Shadow", 210,130,120,20,&scene->r.bake_mode, 1.0, RE_BAKE_SHADOW, 0, 0, ""); + uiDefButS(block, ROW,0,"Normals", 210,110,120,20,&scene->r.bake_mode, 1.0, RE_BAKE_NORMALS, 0, 0, ""); + uiDefButS(block, ROW,0,"Textures", 210,90,120,20,&scene->r.bake_mode, 1.0, RE_BAKE_TEXTURE, 0, 0, ""); + uiDefButS(block, ROW,0,"Displacement", 210,70,120,20,&scene->r.bake_mode, 1.0, RE_BAKE_DISPLACEMENT, 0, 0, ""); uiBlockEndAlign(block); - uiDefButBitS(block, TOG, R_BAKE_CLEAR, 0, "Clear", 210,40,120,20,&G.scene->r.bake_flag, 0.0, 0, 0, 0, "Clear Images before baking"); + uiDefButBitS(block, TOG, R_BAKE_CLEAR, 0, "Clear", 210,40,120,20,&scene->r.bake_flag, 0.0, 0, 0, 0, "Clear Images before baking"); - uiDefButS(block, NUM, 0,"Margin:", 210,10,120,20,&G.scene->r.bake_filter, 0.0, 32.0, 0, 0, "Amount of pixels to extend the baked result with, as post process filter"); + uiDefButS(block, NUM, 0,"Margin:", 210,10,120,20,&scene->r.bake_filter, 0.0, 32.0, 0, 0, "Amount of pixels to extend the baked result with, as post process filter"); uiEndBlock(C, block); } @@ -203,6 +205,7 @@ static void render_panel_bake(const bContext *C, ARegion *ar) static void render_panel_render(const bContext *C, ARegion *ar) { uiBlock *block; + Scene *scene= CTX_data_scene(C); char str[256]; block= uiBeginBlock(C, ar, "render_panel_render", UI_EMBOSS, UI_HELV); @@ -213,67 +216,67 @@ static void render_panel_render(const bContext *C, ARegion *ar) #ifndef DISABLE_YAFRAY /* yafray: on request, render engine menu is back again, and moved to Render panel */ uiDefButS(block, MENU, 0, "Rendering Engine %t|Blender Internal %x0|YafRay %x1", - 369, 142, 191, 20, &G.scene->r.renderer, 0, 0, 0, 0, "Choose rendering engine"); + 369, 142, 191, 20, &scene->r.renderer, 0, 0, 0, 0, "Choose rendering engine"); #else uiDefButS(block, MENU, 0, "Rendering Engine %t|Blender Internal %x0", - 369, 142, 191, 20, &G.scene->r.renderer, 0, 0, 0, 0, "Choose rendering engine"); + 369, 142, 191, 20, &scene->r.renderer, 0, 0, 0, 0, "Choose rendering engine"); #endif /* disable yafray */ uiBlockBeginAlign(block); - if((G.scene->r.scemode & R_FULL_SAMPLE) && (G.scene->r.scemode & R_EXR_TILE_FILE)) - uiDefButBitI(block, TOG, R_OSA, 0, "FSA", 369,109,122,20,&G.scene->r.mode, 0, 0, 0, 0, "Saves all samples, then composites, and then merges (for best Anti-aliasing)"); + if((scene->r.scemode & R_FULL_SAMPLE) && (scene->r.scemode & R_EXR_TILE_FILE)) + uiDefButBitI(block, TOG, R_OSA, 0, "FSA", 369,109,122,20,&scene->r.mode, 0, 0, 0, 0, "Saves all samples, then composites, and then merges (for best Anti-aliasing)"); else - uiDefButBitI(block, TOG, R_OSA, 0, "OSA", 369,109,122,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables Oversampling (Anti-aliasing)"); - uiDefButS(block, ROW,0,"5", 369,88,29,20,&G.scene->r.osa,2.0,5.0, 0, 0, "Render 5 samples per pixel for smooth edges (Fast)"); - uiDefButS(block, ROW,0,"8", 400,88,29,20,&G.scene->r.osa,2.0,8.0, 0, 0, "Render 8 samples per pixel for smooth edges (Recommended)"); - uiDefButS(block, ROW,0,"11", 431,88,29,20,&G.scene->r.osa,2.0,11.0, 0, 0, "Render 11 samples per pixel for smooth edges (High Quality)"); - uiDefButS(block, ROW,0,"16", 462,88,29,20,&G.scene->r.osa,2.0,16.0, 0, 0, "Render 16 samples per pixel for smooth edges (Highest Quality)"); + uiDefButBitI(block, TOG, R_OSA, 0, "OSA", 369,109,122,20,&scene->r.mode, 0, 0, 0, 0, "Enables Oversampling (Anti-aliasing)"); + uiDefButS(block, ROW,0,"5", 369,88,29,20,&scene->r.osa,2.0,5.0, 0, 0, "Render 5 samples per pixel for smooth edges (Fast)"); + uiDefButS(block, ROW,0,"8", 400,88,29,20,&scene->r.osa,2.0,8.0, 0, 0, "Render 8 samples per pixel for smooth edges (Recommended)"); + uiDefButS(block, ROW,0,"11", 431,88,29,20,&scene->r.osa,2.0,11.0, 0, 0, "Render 11 samples per pixel for smooth edges (High Quality)"); + uiDefButS(block, ROW,0,"16", 462,88,29,20,&scene->r.osa,2.0,16.0, 0, 0, "Render 16 samples per pixel for smooth edges (Highest Quality)"); uiBlockEndAlign(block); uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_MBLUR, 0, "MBLUR", 496,109,64,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables Motion Blur calculation"); - uiDefButF(block, NUM,0,"Bf:", 496,88,64,20,&G.scene->r.blurfac, 0.01, 5.0, 10, 2, "Sets motion blur factor"); + uiDefButBitI(block, TOG, R_MBLUR, 0, "MBLUR", 496,109,64,20,&scene->r.mode, 0, 0, 0, 0, "Enables Motion Blur calculation"); + uiDefButF(block, NUM,0,"Bf:", 496,88,64,20,&scene->r.blurfac, 0.01, 5.0, 10, 2, "Sets motion blur factor"); uiBlockEndAlign(block); uiBlockBeginAlign(block); - uiDefButS(block, NUM,0,"Xparts:", 369,46,95,29,&G.scene->r.xparts,1.0, 512.0, 0, 0, "Sets the number of horizontal parts to render image in (For panorama sets number of camera slices)"); - uiDefButS(block, NUM,0,"Yparts:", 465,46,95,29,&G.scene->r.yparts,1.0, 64.0, 0, 0, "Sets the number of vertical parts to render image in"); + uiDefButS(block, NUM,0,"Xparts:", 369,46,95,29,&scene->r.xparts,1.0, 512.0, 0, 0, "Sets the number of horizontal parts to render image in (For panorama sets number of camera slices)"); + uiDefButS(block, NUM,0,"Yparts:", 465,46,95,29,&scene->r.yparts,1.0, 64.0, 0, 0, "Sets the number of vertical parts to render image in"); uiBlockEndAlign(block); uiBlockBeginAlign(block); - uiDefButS(block, ROW,800,"Sky", 369,13,35,20,&G.scene->r.alphamode,3.0,0.0, 0, 0, "Fill background with sky"); - uiDefButS(block, ROW,800,"Premul", 405,13,50,20,&G.scene->r.alphamode,3.0,1.0, 0, 0, "Multiply alpha in advance"); - uiDefButS(block, ROW,800,"Key", 456,13,35,20,&G.scene->r.alphamode,3.0,2.0, 0, 0, "Alpha and color values remain unchanged"); + uiDefButS(block, ROW,800,"Sky", 369,13,35,20,&scene->r.alphamode,3.0,0.0, 0, 0, "Fill background with sky"); + uiDefButS(block, ROW,800,"Premul", 405,13,50,20,&scene->r.alphamode,3.0,1.0, 0, 0, "Multiply alpha in advance"); + uiDefButS(block, ROW,800,"Key", 456,13,35,20,&scene->r.alphamode,3.0,2.0, 0, 0, "Alpha and color values remain unchanged"); uiBlockEndAlign(block); - uiDefButS(block, MENU, 0,"Octree resolution %t|64 %x64|128 %x128|256 %x256|512 %x512", 496,13,64,20,&G.scene->r.ocres,0.0,0.0, 0, 0, "Octree resolution for ray tracing and baking, Use higher values for complex scenes"); + uiDefButS(block, MENU, 0,"Octree resolution %t|64 %x64|128 %x128|256 %x256|512 %x512", 496,13,64,20,&scene->r.ocres,0.0,0.0, 0, 0, "Octree resolution for ray tracing and baking, Use higher values for complex scenes"); uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_SHADOW, 0,"Shadow", 565,172,52,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable shadow calculation"); - uiDefButBitI(block, TOG, R_SSS, 0,"SSS", 617,172,32,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable subsurface scattering map rendering"); - uiDefButBitI(block, TOG, R_PANORAMA, 0,"Pano", 649,172,38,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable panorama rendering (output width is multiplied by Xparts)"); - uiDefButBitI(block, TOG, R_ENVMAP, 0,"EnvMap", 565,142,52,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable environment map rendering"); - uiDefButBitI(block, TOG, R_RAYTRACE, 0,"Ray",617,142,32,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable ray tracing"); - uiDefButBitI(block, TOG, R_RADIO, 0,"Radio", 649,142,38,29, &G.scene->r.mode, 0, 0, 0, 0, "Enable radiosity rendering"); + uiDefButBitI(block, TOG, R_SHADOW, 0,"Shadow", 565,172,52,29, &scene->r.mode, 0, 0, 0, 0, "Enable shadow calculation"); + uiDefButBitI(block, TOG, R_SSS, 0,"SSS", 617,172,32,29, &scene->r.mode, 0, 0, 0, 0, "Enable subsurface scattering map rendering"); + uiDefButBitI(block, TOG, R_PANORAMA, 0,"Pano", 649,172,38,29, &scene->r.mode, 0, 0, 0, 0, "Enable panorama rendering (output width is multiplied by Xparts)"); + uiDefButBitI(block, TOG, R_ENVMAP, 0,"EnvMap", 565,142,52,29, &scene->r.mode, 0, 0, 0, 0, "Enable environment map rendering"); + uiDefButBitI(block, TOG, R_RAYTRACE, 0,"Ray",617,142,32,29, &scene->r.mode, 0, 0, 0, 0, "Enable ray tracing"); + uiDefButBitI(block, TOG, R_RADIO, 0,"Radio", 649,142,38,29, &scene->r.mode, 0, 0, 0, 0, "Enable radiosity rendering"); uiBlockEndAlign(block); uiBlockBeginAlign(block); - uiDefButS(block, ROW,0,"100%", 565,109,122,20,&G.scene->r.size,1.0,100.0, 0, 0, "Set render size to defined size"); - uiDefButS(block, ROW,0,"75%", 565,88,40,20,&G.scene->r.size,1.0,75.0, 0, 0, "Set render size to 3/4 of defined size"); - uiDefButS(block, ROW,0,"50%", 606,88,40,20,&G.scene->r.size,1.0,50.0, 0, 0, "Set render size to 1/2 of defined size"); - uiDefButS(block, ROW,0,"25%", 647,88,40,20,&G.scene->r.size,1.0,25.0, 0, 0, "Set render size to 1/4 of defined size"); + uiDefButS(block, ROW,0,"100%", 565,109,122,20,&scene->r.size,1.0,100.0, 0, 0, "Set render size to defined size"); + uiDefButS(block, ROW,0,"75%", 565,88,40,20,&scene->r.size,1.0,75.0, 0, 0, "Set render size to 3/4 of defined size"); + uiDefButS(block, ROW,0,"50%", 606,88,40,20,&scene->r.size,1.0,50.0, 0, 0, "Set render size to 1/2 of defined size"); + uiDefButS(block, ROW,0,"25%", 647,88,40,20,&scene->r.size,1.0,25.0, 0, 0, "Set render size to 1/4 of defined size"); uiBlockEndAlign(block); uiBlockBeginAlign(block); - uiDefButBitI(block, TOG, R_FIELDS, 0,"Fields", 565,55,60,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables field rendering"); - uiDefButBitI(block, TOG, R_ODDFIELD, 0,"Odd", 627,55,39,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables Odd field first rendering (Default: Even field)"); - uiDefButBitI(block, TOG, R_FIELDSTILL, 0,"X", 668,55,19,20,&G.scene->r.mode, 0, 0, 0, 0, "Disables time difference in field calculations"); + uiDefButBitI(block, TOG, R_FIELDS, 0,"Fields", 565,55,60,20,&scene->r.mode, 0, 0, 0, 0, "Enables field rendering"); + uiDefButBitI(block, TOG, R_ODDFIELD, 0,"Odd", 627,55,39,20,&scene->r.mode, 0, 0, 0, 0, "Enables Odd field first rendering (Default: Even field)"); + uiDefButBitI(block, TOG, R_FIELDSTILL, 0,"X", 668,55,19,20,&scene->r.mode, 0, 0, 0, 0, "Disables time difference in field calculations"); sprintf(str, "Filter%%t|Box %%x%d|Tent %%x%d|Quad %%x%d|Cubic %%x%d|Gauss %%x%d|CatRom %%x%d|Mitch %%x%d", R_FILTER_BOX, R_FILTER_TENT, R_FILTER_QUAD, R_FILTER_CUBIC, R_FILTER_GAUSS, R_FILTER_CATROM, R_FILTER_MITCH); - uiDefButS(block, MENU, 0,str, 565,34,60,20, &G.scene->r.filtertype, 0, 0, 0, 0, "Set sampling filter for antialiasing"); - uiDefButF(block, NUM,0,"", 627,34,60,20,&G.scene->r.gauss,0.5, 1.5, 10, 2, "Sets the filter size"); + uiDefButS(block, MENU, 0,str, 565,34,60,20, &scene->r.filtertype, 0, 0, 0, 0, "Set sampling filter for antialiasing"); + uiDefButF(block, NUM,0,"", 627,34,60,20,&scene->r.gauss,0.5, 1.5, 10, 2, "Sets the filter size"); - uiDefButBitI(block, TOG, R_BORDER, 0, "Border", 565,13,122,20, &G.scene->r.mode, 0, 0, 0, 0, "Render a small cut-out of the image (Shift+B to set in the camera view)"); + uiDefButBitI(block, TOG, R_BORDER, 0, "Border", 565,13,122,20, &scene->r.mode, 0, 0, 0, 0, "Render a small cut-out of the image (Shift+B to set in the camera view)"); uiBlockEndAlign(block); uiEndBlock(C, block); diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 61c53fb58d3..2dd0fec126b 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -899,8 +899,9 @@ static char *layer_menu(RenderResult *rr) static void image_layer_cb(bContext *C, void *ima_v, void *iuser_v) { + Scene *scene= CTX_data_scene(C); - ntreeCompositForceHidden(G.scene->nodetree); + ntreeCompositForceHidden(scene->nodetree, scene); BKE_image_multilayer_index(ima_v, iuser_v); // allqueue(REDRAWNODE, 0); } @@ -1030,7 +1031,7 @@ static void set_render_layers_title(bContext *C, void *node_v, void *unused) } else { str[0]= 0; - sce= G.scene; + sce= CTX_data_scene(C); } srl= BLI_findlink(&sce->r.layers, node->custom1); if(srl==NULL) { @@ -1071,7 +1072,7 @@ static void node_browse_scene_cb(bContext *C, void *ntree_v, void *node_v) node->id= NULL; } sce= BLI_findlink(&G.main->scene, node->menunr-1); - if(sce!=G.scene) { + if(sce!=CTX_data_scene(C)) { node->id= &sce->id; id_us_plus(node->id); } @@ -1090,6 +1091,7 @@ static void node_browse_scene_cb(bContext *C, void *ntree_v, void *node_v) static int node_composit_buts_renderlayers(uiBlock *block, bNodeTree *ntree, bNode *node, rctf *butr) { if(block) { + Scene *scene= NULL; // XXX CTX_data_scene(C) can't work here. node->id has to be set default (ton) uiBut *bt; char *strp; @@ -1104,7 +1106,7 @@ static int node_composit_buts_renderlayers(uiBlock *block, bNodeTree *ntree, bNo if(strp) MEM_freeN(strp); /* browse button layer */ - strp= scene_layer_menu(node->id?(Scene *)node->id:G.scene); + strp= scene_layer_menu(node->id?(Scene *)node->id:scene); if(node->id) bt= uiDefIconTextButS(block, MENU, B_NODE_EXEC+node->nr, ICON_SCENE_DEHLT, strp, butr->xmin+20, butr->ymin, (butr->xmax-butr->xmin)-40, 19, @@ -1958,9 +1960,9 @@ static void node_scale_cb(bContext *C, void *node_v, void *unused_v) nsock->ns.vec[0]= 1.0; else { if(nsock->next==NULL) - nsock->ns.vec[0]= (float)G.scene->r.ysch; + nsock->ns.vec[0]= (float)CTX_data_scene(C)->r.ysch; else - nsock->ns.vec[0]= (float)G.scene->r.xsch; + nsock->ns.vec[0]= (float)CTX_data_scene(C)->r.xsch; } } } diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 7ed00c722d9..fc12e14efe4 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -590,13 +590,13 @@ void snode_set_context(SpaceNode *snode, Scene *scene) } else if(snode->treetype==NTREE_COMPOSIT) { snode->from= NULL; - snode->id= &G.scene->id; + snode->id= &scene->id; /* bit clumsy but reliable way to see if we draw first time */ if(snode->nodetree==NULL) - ntreeCompositForceHidden(G.scene->nodetree); + ntreeCompositForceHidden(scene->nodetree, scene); - snode->nodetree= G.scene->nodetree; + snode->nodetree= scene->nodetree; } else if(snode->treetype==NTREE_TEXTURE) { if(ob) { @@ -915,6 +915,7 @@ bNode *next_node(bNodeTree *ntree) return NULL; } +#if 0 /* is rct in visible part of node? */ static bNode *visible_node(SpaceNode *snode, rctf *rct) { @@ -926,6 +927,7 @@ static bNode *visible_node(SpaceNode *snode, rctf *rct) } return tnode; } +#endif void snode_home(ScrArea *sa, ARegion *ar, SpaceNode* snode) { @@ -1813,7 +1815,7 @@ bNode *node_add_node(SpaceNode *snode, int type, float locx, float locy) id_us_plus(node->id); if(snode->nodetree->type==NTREE_COMPOSIT) - ntreeCompositForceHidden(snode->edittree); + ntreeCompositForceHidden(snode->edittree, scene); // XXX was G.scene NodeTagChanged(snode->edittree, node); } diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index b6c2250f28a..c7f49a31938 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -272,7 +272,7 @@ static void outliner_width(SpaceOops *soops, ListBase *lb, int *w) { TreeElement *te= lb->first; while(te) { - TreeStoreElem *tselem= TREESTORE(te); +// TreeStoreElem *tselem= TREESTORE(te); // XXX fixme... te->xend is not set yet /* @@ -908,7 +908,7 @@ static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *i EditBone *ebone; TreeElement *ten; - for (ebone = G.edbo.first; ebone; ebone=ebone->next, a++) { + for (ebone = arm->edbo->first; ebone; ebone=ebone->next, a++) { ten= outliner_add_element(soops, &te->subtree, id, te, TSE_EBONE, a); ten->directdata= ebone; ten->name= ebone->name; @@ -3900,7 +3900,7 @@ static void restrictbutton_modifier_cb(bContext *C, void *poin, void *poin2) Object *ob = (Object *)poin2; DAG_object_flush_update(scene, ob, OB_RECALC_DATA); - object_handle_update(ob); + object_handle_update(scene, ob); allqueue(REDRAWOOPS, 0); allqueue(REDRAWVIEW3D, 0); diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c index b1b1f504920..0931b6f04ff 100644 --- a/source/blender/editors/space_view3d/drawarmature.c +++ b/source/blender/editors/space_view3d/drawarmature.c @@ -1872,7 +1872,7 @@ static void draw_ebones(View3D *v3d, Object *ob, int dt) if (v3d->zbuf) glDisable(GL_DEPTH_TEST); - for (eBone=G.edbo.first, index=0; eBone; eBone=eBone->next, index++) { + for (eBone=arm->edbo->first, index=0; eBone; eBone=eBone->next, index++) { if (eBone->layer & arm->layer) { if ((eBone->flag & (BONE_HIDDEN_A|BONE_NO_DEFORM))==0) { if (eBone->flag & (BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL)) @@ -1889,7 +1889,7 @@ static void draw_ebones(View3D *v3d, Object *ob, int dt) /* if solid we draw it first */ if ((dt > OB_WIRE) && (arm->drawtype!=ARM_LINE)) { index= 0; - for (eBone=G.edbo.first, index=0; eBone; eBone=eBone->next, index++) { + for (eBone=arm->edbo->first, index=0; eBone; eBone=eBone->next, index++) { if (eBone->layer & arm->layer) { if ((eBone->flag & BONE_HIDDEN_A)==0) { glPushMatrix(); @@ -1926,7 +1926,7 @@ static void draw_ebones(View3D *v3d, Object *ob, int dt) else if (arm->flag & ARM_EDITMODE) index= 0; /* do selection codes */ - for (eBone=G.edbo.first; eBone; eBone=eBone->next) { + for (eBone=arm->edbo->first; eBone; eBone=eBone->next) { if (eBone->layer & arm->layer) { if ((eBone->flag & BONE_HIDDEN_A)==0) { @@ -1983,7 +1983,7 @@ static void draw_ebones(View3D *v3d, Object *ob, int dt) if (v3d->zbuf) glDisable(GL_DEPTH_TEST); - for (eBone=G.edbo.first, index=0; eBone; eBone=eBone->next, index++) { + for (eBone=arm->edbo->first, index=0; eBone; eBone=eBone->next, index++) { if(eBone->layer & arm->layer) { if ((eBone->flag & BONE_HIDDEN_A)==0) { @@ -2295,8 +2295,8 @@ static void draw_ghost_poses_range(Scene *scene, View3D *v3d, Base *base) colfac = (end-CFRA)/range; UI_ThemeColorShadeAlpha(TH_WIRE, 0, -128-(int)(120.0f*sqrt(colfac))); - do_all_pose_actions(ob); - where_is_pose(ob); + do_all_pose_actions(scene, ob); + where_is_pose(scene, ob); draw_pose_channels(scene, v3d, base, OB_WIRE); } glDisable(GL_BLEND); @@ -2372,8 +2372,8 @@ static void draw_ghost_poses_keys(Scene *scene, View3D *v3d, Base *base) CFRA= (int)ak->cfra; - do_all_pose_actions(ob); - where_is_pose(ob); + do_all_pose_actions(scene, ob); + where_is_pose(scene, ob); draw_pose_channels(scene, v3d, base, OB_WIRE); } glDisable(GL_BLEND); @@ -2454,8 +2454,8 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, Base *base) else CFRA= (int)floor(actframe+ctime); if (CFRA!=cfrao) { - do_all_pose_actions(ob); - where_is_pose(ob); + do_all_pose_actions(scene, ob); + where_is_pose(scene, ob); draw_pose_channels(scene, v3d, base, OB_WIRE); } } @@ -2470,8 +2470,8 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, Base *base) else CFRA= (int)floor(actframe-ctime); if (CFRA != cfrao) { - do_all_pose_actions(ob); - where_is_pose(ob); + do_all_pose_actions(scene, ob); + where_is_pose(scene, ob); draw_pose_channels(scene, v3d, base, OB_WIRE); } } diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index ad62329f8fc..1fa7a4d96e1 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -477,7 +477,7 @@ void draw_mesh_text(Scene *scene, Object *ob, int glsl) if(FACESEL_PAINT_TEST) return; - ddm = mesh_get_derived_deform(ob, CD_MASK_BAREMESH); + ddm = mesh_get_derived_deform(scene, ob, CD_MASK_BAREMESH); for(a=0, mf=mface; a<totface; a++, tface++, mf++) { int mode= tface->mode; diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 963eaf15c48..a58100e2b00 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -120,7 +120,7 @@ extern ListBase editNurb; /* editmball.c */ extern ListBase editelems; -static void draw_bounding_volume(Object *ob); +static void draw_bounding_volume(Scene *scene, Object *ob); static void drawcube_size(float size); static void drawcircle_size(float size); @@ -1123,7 +1123,7 @@ 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) +static void drawlattice(Scene *scene, View3D *v3d, Object *ob) { Lattice *lt= ob->data; DispList *dl; @@ -1132,7 +1132,7 @@ static void drawlattice(View3D *v3d, Object *ob) /* now we default make displist, this will modifiers work for non animated case */ if(ob->disp.first==NULL) - lattice_calc_modifiers(ob); + lattice_calc_modifiers(scene, ob); dl= find_displist(&ob->disp, DL_VERTS); if(lt->editlatt) { @@ -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->obedit, vc->em, CD_MASK_BAREMESH); + DerivedMesh *dm = editmesh_get_derived_cage(vc->scene, 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->obedit, vc->em, CD_MASK_BAREMESH); + DerivedMesh *dm = editmesh_get_derived_cage(vc->scene, 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->obedit, vc->em, CD_MASK_BAREMESH); + DerivedMesh *dm = editmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); data.vc= *vc; data.func = func; @@ -2151,7 +2151,7 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, Base *base, int dt, int f int draw_wire = 0; int totvert, totedge, totface; DispList *dl; - DerivedMesh *dm= mesh_get_derived_final(ob, get_viewedit_datamask()); + DerivedMesh *dm= mesh_get_derived_final(scene, ob, get_viewedit_datamask()); if(!dm) return; @@ -2172,7 +2172,7 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, Base *base, int dt, int f if (ob==OBACT && FACESEL_PAINT_TEST) draw_wire = 0; if(dt==OB_BOUNDBOX) { - draw_bounding_volume(ob); + draw_bounding_volume(scene, ob); } else if(hasHaloMat || (totface==0 && totedge==0)) { glPointSize(1.5); @@ -2276,9 +2276,9 @@ static void draw_mesh_fancy(Scene *scene, View3D *v3d, Base *base, int dt, int f /* release and reload derivedmesh because it might be freed in shadeDispList due to a different datamask */ dm->release(dm); - shadeDispList(base); + shadeDispList(scene, base); dl = find_displist(&ob->disp, DL_VERTCOL); - dm= mesh_get_derived_final(ob, get_viewedit_datamask()); + dm= mesh_get_derived_final(scene, ob, get_viewedit_datamask()); } if ((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire) { @@ -2370,7 +2370,7 @@ static int draw_mesh_object(Scene *scene, View3D *v3d, Base *base, int dt, int f if (obedit!=ob) finalDM = cageDM = editmesh_get_derived_base(ob, em); else - cageDM = editmesh_get_derived_cage_and_final(ob, em, &finalDM, + cageDM = editmesh_get_derived_cage_and_final(scene, ob, em, &finalDM, get_viewedit_datamask()); if(dt>OB_WIRE) { @@ -2714,7 +2714,7 @@ static int drawDispList(Scene *scene, View3D *v3d, Base *base, int dt) drawDispListsolid(lb, ob, 1); } else if(dt == OB_SHADED) { - if(ob->disp.first==0) shadeDispList(base); + if(ob->disp.first==0) shadeDispList(scene, base); drawDispListshaded(lb, ob); } else { @@ -2752,7 +2752,7 @@ static int drawDispList(Scene *scene, View3D *v3d, Base *base, int dt) drawDispListsolid(lb, ob, 1); } else if(dt==OB_SHADED) { - if(ob->disp.first==NULL) shadeDispList(base); + if(ob->disp.first==NULL) shadeDispList(scene, base); drawDispListshaded(lb, ob); } else { @@ -2770,7 +2770,7 @@ static int drawDispList(Scene *scene, View3D *v3d, Base *base, int dt) if( is_basis_mball(ob)) { lb= &ob->disp; - if(lb->first==NULL) makeDispListMBall(ob); + if(lb->first==NULL) makeDispListMBall(scene, ob); if(lb->first==NULL) return 1; if(solid) { @@ -2781,7 +2781,7 @@ static int drawDispList(Scene *scene, View3D *v3d, Base *base, int dt) } else if(dt == OB_SHADED) { dl= lb->first; - if(dl && dl->col1==0) shadeDispList(base); + if(dl && dl->col1==0) shadeDispList(scene, base); drawDispListshaded(lb, ob); } else { @@ -2824,7 +2824,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, Base *base, Part Object *bb_ob=0; float vel[3], vec[3], vec2[3], imat[4][4], onevec[3]={0.0f,0.0f,0.0f}, bb_center[3]; float timestep, pixsize=1.0, pa_size, pa_time, r_tilt; - float cfra=bsystem_time(ob,(float)CFRA,0.0); + float cfra= bsystem_time(scene, ob,(float)CFRA,0.0); float *vdata=0, *vedata=0, *cdata=0, *ndata=0, *vd=0, *ved=0, *cd=0, *nd=0, xvec[3], yvec[3], zvec[3]; float ma_r=0.0f, ma_g=0.0f, ma_b=0.0f; int a, k, k_max=0, totpart, totpoint=0, draw_as, path_nbr=0; @@ -2846,7 +2846,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, Base *base, Part if(pars==0) return; // XXX what logic is this? - if(!scene->obedit && psys_in_edit_mode(psys) + if(!scene->obedit && psys_in_edit_mode(scene, psys) && psys->flag & PSYS_HAIR_DONE && part->draw_as==PART_DRAW_PATH) return; @@ -2913,7 +2913,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, Base *base, Part draw_as=part->draw_as; if(part->flag&PART_GLOB_TIME) - cfra=bsystem_time(0,(float)CFRA,0.0); + cfra=bsystem_time(scene, 0, (float)CFRA, 0.0f); if(psys->pathcache){ path_possible=1; @@ -3027,7 +3027,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, Base *base, Part cd=cdata; nd=ndata; - psys->lattice=psys_get_lattice(ob,psys); + psys->lattice= psys_get_lattice(scene, ob, psys); } if(draw_as){ @@ -3113,7 +3113,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, Base *base, Part for(k=0; k<=path_nbr; k++){ if(draw_keys){ state.time=(float)k/(float)path_nbr; - psys_get_particle_on_path(ob,psys,a,&state,1); + psys_get_particle_on_path(scene, ob, psys, a, &state,1); } else if(path_nbr){ if(k<=k_max){ @@ -3126,7 +3126,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, Base *base, Part } else{ state.time=cfra; - if(psys_get_particle_state(ob,psys,a,&state,0)==0){ + if(psys_get_particle_state(scene, ob, psys, a, &state,0)==0){ next_pa=1; break; } @@ -3504,14 +3504,14 @@ static void draw_particle_edit(Scene *scene, View3D *v3d, Object *ob, ParticleSy /* create path and child path cache if it doesn't exist already */ if(psys->pathcache==0){ // XXX PE_hide_keys_time(psys,CFRA); - psys_cache_paths(ob,psys,CFRA,0); + psys_cache_paths(scene, ob, psys, CFRA,0); } if(psys->pathcache==0) return; if(pset->flag & PE_SHOW_CHILD && psys->part->draw_as == PART_DRAW_PATH) { if(psys->childcache==0) - psys_cache_child_paths(ob, psys, CFRA, 0); + psys_cache_child_paths(scene, ob, psys, CFRA, 0); } else if(!(pset->flag & PE_SHOW_CHILD) && psys->childcache) free_child_path_cache(psys); @@ -4484,7 +4484,7 @@ static void draw_bb_quadric(BoundBox *bb, short type) gluDeleteQuadric(qobj); } -static void draw_bounding_volume(Object *ob) +static void draw_bounding_volume(Scene *scene, Object *ob) { BoundBox *bb=0; @@ -4497,7 +4497,7 @@ static void draw_bounding_volume(Object *ob) else if(ob->type==OB_MBALL) { bb= ob->bb; if(bb==0) { - makeDispListMBall(ob); + makeDispListMBall(scene, ob); bb= ob->bb; } } @@ -4761,7 +4761,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) base->flag= 0; - where_is_object_time(ob, (scene->r.cfra)); + where_is_object_time(scene, ob, (scene->r.cfra)); draw_object(scene, ar, v3d, base, 0); } ce= ce->next; @@ -4775,7 +4775,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) base->flag= SELECT; - where_is_object_time(ob, (scene->r.cfra)); + where_is_object_time(scene, ob, (scene->r.cfra)); draw_object(scene, ar, v3d, base, 0); } ce= ce->next; @@ -4791,7 +4791,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) (scene->r.cfra)= cfraont; memcpy(&ob->loc, temp, 7*3*sizeof(float)); - where_is_object(ob); + where_is_object(scene, ob); v3d->drawtype= drawtype; BLI_freelistN(&elems); @@ -4802,7 +4802,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) } /* patch? children objects with a timeoffs change the parents. How to solve! */ - /* if( ((int)ob->ctime) != F_(scene->r.cfra)) where_is_object(ob); */ + /* if( ((int)ob->ctime) != F_(scene->r.cfra)) where_is_object(scene, ob); */ wmMultMatrix(ob->obmat); @@ -4912,7 +4912,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) break; case OB_FONT: cu= ob->data; - if (cu->disp.first==NULL) makeDispListCurveTypes(ob, 0); + if (cu->disp.first==NULL) makeDispListCurveTypes(scene, ob, 0); if(cu->editstr) { tekentextcurs(); @@ -4996,7 +4996,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) } } else if(dt==OB_BOUNDBOX) - draw_bounding_volume(ob); + draw_bounding_volume(scene, ob); else if(boundbox_clip(v3d, ob->obmat, cu->bb)) empty_object= drawDispList(scene, v3d, base, dt); @@ -5005,13 +5005,13 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) case OB_SURF: cu= ob->data; /* still needed for curves hidden in other layers. depgraph doesnt handle that yet */ - if (cu->disp.first==NULL) makeDispListCurveTypes(ob, 0); + if (cu->disp.first==NULL) makeDispListCurveTypes(scene, ob, 0); if(cu->editnurb) { drawnurb(scene, v3d, base, cu->editnurb->first, dt); } else if(dt==OB_BOUNDBOX) - draw_bounding_volume(ob); + draw_bounding_volume(scene, ob); else if(boundbox_clip(v3d, ob->obmat, cu->bb)) { empty_object= drawDispList(scene, v3d, base, dt); @@ -5026,7 +5026,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(mb->editelems) drawmball(scene, v3d, base, dt); else if(dt==OB_BOUNDBOX) - draw_bounding_volume(ob); + draw_bounding_volume(scene, ob); else empty_object= drawmball(scene, v3d, base, dt); break; @@ -5042,7 +5042,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) drawcamera(scene, v3d, ob, flag); break; case OB_LATTICE: - drawlattice(v3d, ob); + drawlattice(scene, v3d, ob); break; case OB_ARMATURE: if(dt>OB_WIRE) GPU_enable_material(0, NULL); // we use default material @@ -5069,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 && !scene->obedit && psys_in_edit_mode(psys)) + if(psys && !scene->obedit && psys_in_edit_mode(scene, psys)) draw_particle_edit(scene, v3d, ob, psys, dt); } glDepthMask(GL_TRUE); @@ -5094,7 +5094,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(dtx & OB_AXIS) { drawaxes(1.0f, flag, OB_ARROWS); } - if(dtx & OB_BOUNDBOX) draw_bounding_volume(ob); + if(dtx & OB_BOUNDBOX) draw_bounding_volume(scene, ob); if(dtx & OB_TEXSPACE) drawtexspace(ob); if(dtx & OB_DRAWNAME) { /* patch for several 3d cards (IBM mostly) that crash on glSelect with text drawing */ @@ -5188,7 +5188,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) make_axis_color(col, col2, 'z'); glColor3ubv((GLubyte *)col2); - cob= constraints_make_evalob(ob, NULL, CONSTRAINT_OBTYPE_OBJECT); + cob= constraints_make_evalob(scene, ob, NULL, CONSTRAINT_OBTYPE_OBJECT); for (curcon = list->first; curcon; curcon=curcon->next) { bConstraintTypeInfo *cti= constraint_get_typeinfo(curcon); @@ -5201,7 +5201,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) for (ct= targets.first; ct; ct= ct->next) { /* calculate target's matrix */ if (cti->get_target_matrix) - cti->get_target_matrix(curcon, cob, ct, bsystem_time(ob, (float)(scene->r.cfra), give_timeoffset(ob))); + cti->get_target_matrix(curcon, cob, ct, bsystem_time(scene, ob, (float)(scene->r.cfra), give_timeoffset(ob))); else Mat4One(ct->matrix); @@ -5361,9 +5361,9 @@ static int bbs_mesh_solid__setDrawOpts(void *userData, int index, int *drawSmoot } /* TODO remove this - since face select mode now only works with painting */ -static void bbs_mesh_solid(Object *ob) +static void bbs_mesh_solid(Scene *scene, Object *ob) { - DerivedMesh *dm = mesh_get_derived_final(ob, get_viewedit_datamask()); + DerivedMesh *dm = mesh_get_derived_final(scene, ob, get_viewedit_datamask()); Mesh *me = (Mesh*)ob->data; glColor3ub(0, 0, 0); @@ -5386,7 +5386,7 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, Object *ob) Mesh *me= ob->data; EditMesh *em= me->edit_mesh; if(em) { - DerivedMesh *dm = editmesh_get_derived_cage(ob, em, CD_MASK_BAREMESH); + DerivedMesh *dm = editmesh_get_derived_cage(scene, ob, em, CD_MASK_BAREMESH); EM_init_index_arrays(em, 1, 1, 1); @@ -5408,7 +5408,7 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, Object *ob) EM_free_index_arrays(); } - else bbs_mesh_solid(ob); + else bbs_mesh_solid(scene, ob); } break; case OB_CURVE: @@ -5433,7 +5433,7 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, Object *ob, int if(me->edit_mesh) edm= editmesh_get_derived_base(ob, me->edit_mesh); else - dm = mesh_get_derived_final(ob, CD_MASK_BAREMESH); + dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); if(dt<=OB_WIRE) { if(dm) diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 90840533d55..655bd164758 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -797,7 +797,7 @@ static void draw_selected_name(Scene *scene, Object *ob, View3D *v3d) } /* colour depends on whether there is a keyframe */ - if (id_frame_has_keyframe((ID *)ob, frame_to_float(CFRA), v3d->keyflags)) + if (id_frame_has_keyframe((ID *)ob, frame_to_float(scene, CFRA), v3d->keyflags)) UI_ThemeColor(TH_VERTEX_SELECT); else UI_ThemeColor(TH_TEXT_HI); @@ -1099,7 +1099,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) G.f |= G_BACKBUFSEL; - base= (G.scene->basact); + base= (scene->basact); if(base && (base->lay & v3d->lay)) { draw_object_backbufsel(scene, v3d, base->object); } @@ -1629,7 +1629,7 @@ void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *)) v3d->flag &= ~V3D_SELECT_OUTLINE; setwinmatrixview3d(v3d, ar->winx, ar->winy, NULL); /* 0= no pick rect */ - setviewmatrixview3d(v3d); /* note: calls where_is_object for camera... */ + setviewmatrixview3d(scene, v3d); /* note: calls where_is_object for camera... */ Mat4MulMat4(v3d->persmat, v3d->viewmat, v3d->winmat); Mat4Invert(v3d->persinv, v3d->persmat); @@ -1805,12 +1805,12 @@ void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d) /* sets first, we allow per definition current scene to have dependencies on sets */ if(scene->set) { for(SETLOOPER(scene->set, base)) - object_handle_update(base->object); // bke_object.h + object_handle_update(scene, base->object); // bke_object.h } v3d->lay_used = 0; for(base= scene->base.first; base; base= base->next) { - object_handle_update(base->object); // bke_object.h + object_handle_update(scene, base->object); // bke_object.h v3d->lay_used |= base->lay; } @@ -1819,7 +1819,7 @@ void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d) gpu_update_lamps_shadows(scene, v3d); setwinmatrixview3d(v3d, ar->winx, ar->winy, NULL); /* 0= no pick rect */ - setviewmatrixview3d(v3d); /* note: calls where_is_object for camera... */ + setviewmatrixview3d(scene, v3d); /* note: calls where_is_object for camera... */ Mat4MulMat4(v3d->persmat, v3d->viewmat, v3d->winmat); Mat4Invert(v3d->persinv, v3d->persmat); @@ -1875,7 +1875,7 @@ void drawview3dspace(Scene *scene, ARegion *ar, View3D *v3d) if(v3d->persp==2) { if(scene->world) { if(scene->world->mode & WO_STARS) { - RE_make_stars(NULL, star_stuff_init_func, star_stuff_vertex_func, + RE_make_stars(NULL, scene, star_stuff_init_func, star_stuff_vertex_func, star_stuff_term_func); } } diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index a5ea2a83b77..c5ca9f86450 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -817,7 +817,7 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with if(TESTBASE(v3d, base)) { minmax_object(base->object, min, max); /* account for duplis */ - minmax_object_duplis(base->object, min, max); + minmax_object_duplis(scene, base->object, min, max); ok= 1; } diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 3de551a516a..c2aea73b2f3 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -224,7 +224,7 @@ void do_layer_buttons(bContext *C, short event) ED_area_tag_redraw(sa); if(sa->spacetype==SPACE_OOPS) allqueue(REDRAWVIEW3D, 1); /* 1==also do headwin */ - if(v3d->drawtype == OB_SHADED) reshadeall_displist(); + if(v3d->drawtype == OB_SHADED) reshadeall_displist(scene); allqueue(REDRAWNLA, 0); } diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index 79c99721a2b..06ccbc1406d 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -128,8 +128,6 @@ void view3d_get_object_project_mat(View3D *v3d, struct Object *ob, float pmat[4] void view3d_project_float(ARegion *ar, float *vec, float *adr, float mat[4][4]); int get_view3d_viewplane(View3D *v3d, int winxi, int winyi, rctf *viewplane, float *clipsta, float *clipend, float *pixsize); -void view_settings_from_ob(Object *ob, float *ofs, float *quat, float *dist, float *lens); -void obmat_to_viewmat(View3D *v3d, Object *ob, short smooth); short view3d_opengl_select(struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, rcti *input); void initlocalview(Scene *scene, ARegion *ar, View3D *v3d); @@ -141,7 +139,7 @@ void centerview(ARegion *ar, View3D *v3d); void smooth_view(struct bContext *C, Object *, Object *, float *ofs, float *quat, float *dist, float *lens); void setwinmatrixview3d(View3D *v3d, int winx, int winy, rctf *rect); /* rect: for picking */ -void setviewmatrixview3d(View3D *v3d); +void setviewmatrixview3d(Scene *scene, View3D *v3d); #endif /* ED_VIEW3D_INTERN_H */ diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 8fa54c7c7ad..35b9df6c889 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -560,13 +560,14 @@ static void do_lasso_select_lattice(ViewContext *vc, short mcords[][2], short mo static void do_lasso_select_armature(ViewContext *vc, short mcords[][2], short moves, short select) { + bArmature *arm= vc->obedit->data; EditBone *ebone; float vec[3]; short sco1[2], sco2[2], didpoint; /* set editdata in vc */ - for (ebone=G.edbo.first; ebone; ebone=ebone->next) { + for (ebone= arm->edbo->first; ebone; ebone=ebone->next) { VECCOPY(vec, ebone->head); Mat4MulVecfl(vc->obedit->obmat, vec); @@ -1352,10 +1353,11 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) } } else if(obedit->type==OB_ARMATURE) { + bArmature *arm= obedit->data; EditBone *ebone; /* clear flag we use to detect point was affected */ - for(ebone= G.edbo.first; ebone; ebone= ebone->next) + for(ebone= arm->edbo->first; ebone; ebone= ebone->next) ebone->flag &= ~BONE_DONE; hits= view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect); @@ -1364,7 +1366,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) for (a=0; a<hits; a++){ index = buffer[(4*a)+3]; if (index!=-1) { - ebone = BLI_findlink(&G.edbo, index & ~(BONESEL_ANY)); + ebone = BLI_findlink(arm->edbo, index & ~(BONESEL_ANY)); if (index & BONESEL_TIP) { ebone->flag |= BONE_DONE; if (val==LEFTMOUSE) ebone->flag |= BONE_TIPSEL; @@ -1380,7 +1382,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) } /* now we have to flush tag from parents... */ - for(ebone= G.edbo.first; ebone; ebone= ebone->next) { + for(ebone= arm->edbo->first; ebone; ebone= ebone->next) { if(ebone->parent && (ebone->flag & BONE_CONNECTED)) { if(ebone->parent->flag & BONE_DONE) ebone->flag |= BONE_DONE; @@ -1391,7 +1393,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) for (a=0; a<hits; a++){ index = buffer[(4*a)+3]; if (index!=-1) { - ebone = BLI_findlink(&G.edbo, index & ~(BONESEL_ANY)); + ebone = BLI_findlink(arm->edbo, index & ~(BONESEL_ANY)); if (index & BONESEL_BONE) { if(!(ebone->flag & BONE_DONE)) { if (val==LEFTMOUSE) diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 1986203f839..48379e0913a 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -111,6 +111,82 @@ float *give_cursor(Scene *scene, View3D *v3d) else return scene->cursor; } + +/* Gets the lens and clipping values from a camera of lamp type object */ +static void object_lens_clip_settings(Object *ob, float *lens, float *clipsta, float *clipend) +{ + if (!ob) return; + + if(ob->type==OB_LAMP ) { + Lamp *la = ob->data; + if (lens) { + float x1, fac; + fac= cos( M_PI*la->spotsize/360.0); + x1= saacos(fac); + *lens= 16.0*fac/sin(x1); + } + if (clipsta) *clipsta= la->clipsta; + if (clipend) *clipend= la->clipend; + } + else if(ob->type==OB_CAMERA) { + Camera *cam= ob->data; + if (lens) *lens= cam->lens; + if (clipsta) *clipsta= cam->clipsta; + if (clipend) *clipend= cam->clipend; + } + else { + if (lens) *lens= 35.0f; + } +} + + +/* Gets the view trasnformation from a camera +* currently dosnt take camzoom into account +* +* The dist is not modified for this function, if NULL its assimed zero +* */ +/* Scene can be NULL */ +static void view_settings_from_ob(Scene *scene, Object *ob, float *ofs, float *quat, float *dist, float *lens) +{ + float bmat[4][4]; + float imat[4][4]; + float tmat[3][3]; + + if (!ob) return; + + /* Offset */ + if (ofs) { + /* this should not be needed, nly for camera to prevent lag */ + if(scene) where_is_object(scene, ob); + VECCOPY(ofs, ob->obmat[3]); + VecMulf(ofs, -1.0f); /*flip the vector*/ + } + + /* Quat */ + if (quat) { + Mat4CpyMat4(bmat, ob->obmat); + Mat4Ortho(bmat); + Mat4Invert(imat, bmat); + Mat3CpyMat4(tmat, imat); + Mat3ToQuat(tmat, quat); + } + + if (dist) { + float vec[3]; + Mat3CpyMat4(tmat, ob->obmat); + + vec[0]= vec[1] = 0.0; + vec[2]= -(*dist); + Mat3MulVecfl(tmat, vec); + VecSubf(ofs, ofs, vec); + } + + /* Lens */ + if (lens) + object_lens_clip_settings(ob, lens, NULL, NULL); +} + + /* ****************** smooth view operator ****************** */ struct SmoothViewStore { @@ -128,6 +204,7 @@ struct SmoothViewStore { /* the arguments are the desired situation */ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, float *quat, float *dist, float *lens) { + Scene *scene= CTX_data_scene(C); View3D *v3d= (View3D *)CTX_wm_space_data(C); struct SmoothViewStore sms; @@ -145,7 +222,7 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo if(lens) sms.new_lens= *lens; if (camera) { - view_settings_from_ob(camera, sms.new_ofs, sms.new_quat, &sms.new_dist, &sms.new_lens); + view_settings_from_ob(scene, camera, sms.new_ofs, sms.new_quat, &sms.new_dist, &sms.new_lens); sms.to_camera= 1; /* restore view3d values in end */ } @@ -192,7 +269,7 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo /* original values */ if (oldcamera) { sms.orig_dist= v3d->dist; // below function does weird stuff with it... - view_settings_from_ob(oldcamera, sms.orig_ofs, sms.orig_quat, &sms.orig_dist, &sms.orig_lens); + view_settings_from_ob(scene, oldcamera, sms.orig_ofs, sms.orig_quat, &sms.orig_dist, &sms.orig_lens); } else { VECCOPY(sms.orig_ofs, v3d->ofs); @@ -798,81 +875,7 @@ void setwinmatrixview3d(View3D *v3d, int winx, int winy, rctf *rect) /* rect: f } - -/* Gets the lens and clipping values from a camera of lamp type object */ -static void object_lens_clip_settings(Object *ob, float *lens, float *clipsta, float *clipend) -{ - if (!ob) return; - - if(ob->type==OB_LAMP ) { - Lamp *la = ob->data; - if (lens) { - float x1, fac; - fac= cos( M_PI*la->spotsize/360.0); - x1= saacos(fac); - *lens= 16.0*fac/sin(x1); - } - if (clipsta) *clipsta= la->clipsta; - if (clipend) *clipend= la->clipend; - } - else if(ob->type==OB_CAMERA) { - Camera *cam= ob->data; - if (lens) *lens= cam->lens; - if (clipsta) *clipsta= cam->clipsta; - if (clipend) *clipend= cam->clipend; - } - else { - if (lens) *lens= 35.0f; - } -} - - -/* Gets the view trasnformation from a camera -* currently dosnt take camzoom into account -* -* The dist is not modified for this function, if NULL its assimed zero -* */ -void view_settings_from_ob(Object *ob, float *ofs, float *quat, float *dist, float *lens) -{ - float bmat[4][4]; - float imat[4][4]; - float tmat[3][3]; - - if (!ob) return; - - /* Offset */ - if (ofs) { - where_is_object(ob); - VECCOPY(ofs, ob->obmat[3]); - VecMulf(ofs, -1.0f); /*flip the vector*/ - } - - /* Quat */ - if (quat) { - Mat4CpyMat4(bmat, ob->obmat); - Mat4Ortho(bmat); - Mat4Invert(imat, bmat); - Mat3CpyMat4(tmat, imat); - Mat3ToQuat(tmat, quat); - } - - if (dist) { - float vec[3]; - Mat3CpyMat4(tmat, ob->obmat); - - vec[0]= vec[1] = 0.0; - vec[2]= -(*dist); - Mat3MulVecfl(tmat, vec); - VecSubf(ofs, ofs, vec); - } - - /* Lens */ - if (lens) - object_lens_clip_settings(ob, lens, NULL, NULL); -} - - -void obmat_to_viewmat(View3D *v3d, Object *ob, short smooth) +static void obmat_to_viewmat(Scene *scene, View3D *v3d, Object *ob, short smooth) { float bmat[4][4]; float tmat[3][3]; @@ -901,7 +904,7 @@ void obmat_to_viewmat(View3D *v3d, Object *ob, short smooth) v3d->persp=V3D_PERSP; v3d->dist= 0.0; - view_settings_from_ob(v3d->camera, v3d->ofs, NULL, NULL, &v3d->lens); + view_settings_from_ob(scene, v3d->camera, v3d->ofs, NULL, NULL, &v3d->lens); smooth_view(NULL, NULL, NULL, orig_ofs, new_quat, &orig_dist, &orig_lens); // XXX v3d->persp=V3D_CAMOB; /* just to be polite, not needed */ @@ -916,12 +919,12 @@ void obmat_to_viewmat(View3D *v3d, Object *ob, short smooth) } /* dont set windows active in in here, is used by renderwin too */ -void setviewmatrixview3d(View3D *v3d) +void setviewmatrixview3d(Scene *scene, View3D *v3d) { if(v3d->persp==V3D_CAMOB) { /* obs/camera */ if(v3d->camera) { - where_is_object(v3d->camera); - obmat_to_viewmat(v3d, v3d->camera, 0); + where_is_object(scene, v3d->camera); + obmat_to_viewmat(scene, v3d, v3d->camera, 0); } else { QuatToMat4(v3d->viewquat, v3d->viewmat); @@ -1276,7 +1279,7 @@ void endlocalview(Scene *scene, ScrArea *sa) } } -void view3d_align_axis_to_vector(View3D *v3d, int axisidx, float vec[3]) +void view3d_align_axis_to_vector(Scene *scene, View3D *v3d, int axisidx, float vec[3]) { float alignaxis[3] = {0.0, 0.0, 0.0}; float norm[3], axis[3], angle, new_quat[4]; @@ -1302,7 +1305,7 @@ void view3d_align_axis_to_vector(View3D *v3d, int axisidx, float vec[3]) VECCOPY(orig_ofs, v3d->ofs); v3d->persp= V3D_PERSP; v3d->dist= 0.0; - view_settings_from_ob(v3d->camera, v3d->ofs, NULL, NULL, &v3d->lens); + view_settings_from_ob(scene, v3d->camera, v3d->ofs, NULL, NULL, &v3d->lens); smooth_view(NULL, NULL, NULL, orig_ofs, new_quat, &orig_dist, &orig_lens); // XXX } else { if (v3d->persp==V3D_CAMOB) v3d->persp= V3D_PERSP; /* switch out of camera mode */ diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 5d10a07231b..6f9b34d610c 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -792,7 +792,7 @@ void transformEvent(TransInfo *t, wmEvent *event) break; case OKEY: if (t->flag & T_PROP_EDIT && event->keymodifier == KM_SHIFT) { - G.scene->prop_mode = (G.scene->prop_mode+1)%6; + t->scene->prop_mode = (t->scene->prop_mode+1)%6; calculatePropRatio(t); t->redraw= 1; } @@ -2081,7 +2081,7 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) { } else if (t->flag & T_EDIT) { - if(t->around==V3D_LOCAL && (G.scene->selectmode & SCE_SELECT_FACE)) { + if(t->around==V3D_LOCAL && (t->scene->selectmode & SCE_SELECT_FACE)) { VECCOPY(center, td->center); } else { @@ -2381,7 +2381,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short } else { /* !TODO! Make this if not rely on G */ - if(around==V3D_LOCAL && (G.scene->selectmode & SCE_SELECT_FACE)) { + if(around==V3D_LOCAL && (t->scene->selectmode & SCE_SELECT_FACE)) { center = td->center; } } @@ -2831,7 +2831,7 @@ static void headerTranslation(TransInfo *t, float vec[3], char *str) { sprintf(distvec, "%.4f", dist); if(t->flag & T_AUTOIK) { - short chainlen= G.scene->toolsettings->autoik_chainlen; + short chainlen= t->scene->toolsettings->autoik_chainlen; if(chainlen) sprintf(autoik, "AutoIK-Len: %d", chainlen); @@ -3997,7 +3997,7 @@ int Align(TransInfo *t, short mval[2]) VECCOPY(t->center, td->center); } else { - if(G.scene->selectmode & SCE_SELECT_FACE) { + if(t->scene->selectmode & SCE_SELECT_FACE) { VECCOPY(t->center, td->center); } } diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 6b9c635779f..cd06c27e12e 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -73,6 +73,7 @@ #include "BKE_armature.h" #include "BKE_blender.h" #include "BKE_cloth.h" +#include "BKE_context.h" #include "BKE_curve.h" #include "BKE_constraint.h" #include "BKE_depsgraph.h" @@ -763,7 +764,7 @@ static void pchan_autoik_adjust (bPoseChannel *pchan, short chainlen) /* change the chain-length of auto-ik */ void transform_autoik_update (TransInfo *t, short mode) { - short *chainlen= &G.scene->toolsettings->autoik_chainlen; + short *chainlen= &t->scene->toolsettings->autoik_chainlen; bPoseChannel *pchan; /* mode determines what change to apply to chainlen */ @@ -1610,7 +1611,7 @@ static void createTransParticleVerts(bContext *C, TransInfo *t) int count = 0, hasselected = 0; int propmode = t->flag & T_PROP_EDIT; - if(psys==NULL || G.scene->selectmode==SCE_SELECT_PATH) return; + if(psys==NULL || t->scene->selectmode==SCE_SELECT_PATH) return; psmd = psys_get_modifier(ob,psys); @@ -1959,11 +1960,11 @@ static float *get_crazy_mapped_editverts(TransInfo *t) /* disable subsurf temporal, get mapped cos, and enable it */ if(modifiers_disable_subsurf_temporary(t->obedit)) { /* need to make new derivemesh */ - makeDerivedMesh(t->obedit, me->edit_mesh, CD_MASK_BAREMESH); + makeDerivedMesh(t->scene, t->obedit, me->edit_mesh, CD_MASK_BAREMESH); } /* now get the cage */ - dm= editmesh_get_derived_cage(t->obedit, me->edit_mesh, CD_MASK_BAREMESH); + dm= editmesh_get_derived_cage(t->scene, t->obedit, me->edit_mesh, CD_MASK_BAREMESH); vertexcos= MEM_mallocN(3*sizeof(float)*G.totvert, "vertexcos map"); dm->foreachMappedVert(dm, make_vertexcos__mapFunc, vertexcos); @@ -3265,7 +3266,7 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object * ob->constraints.first = ob->constraints.last = NULL; } - where_is_object(ob); + where_is_object(t->scene, ob); if (constinv == 0) { ob->constraints.first = fakecons.first; @@ -3275,7 +3276,7 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object * ob->track= track; } else - where_is_object(ob); + where_is_object(t->scene, ob); td->ob = ob; @@ -3349,12 +3350,12 @@ static void set_trans_object_base_flags(bContext *C, TransInfo *t) return; /* makes sure base flags and object flags are identical */ - copy_baseflags(); + copy_baseflags(t->scene); /* handle pending update events, otherwise they got copied below */ for (base= sce->base.first; base; base= base->next) { if(base->object->recalc) - object_handle_update(base->object); + object_handle_update(t->scene, base->object); } for (base= sce->base.first; base; base= base->next) { @@ -3388,7 +3389,7 @@ static void set_trans_object_base_flags(bContext *C, TransInfo *t) } /* all recalc flags get flushed to all layers, so a layer flip later on works fine */ - DAG_scene_flush_update(G.scene, -1, 0); + DAG_scene_flush_update(t->scene, -1, 0); /* and we store them temporal in base (only used for transform code) */ /* this because after doing updates, the object->recalc is cleared */ @@ -3852,7 +3853,7 @@ void special_aftertrans_update(TransInfo *t) synchronize_action_strips(); /* cleanup */ - for (base=G.scene->base.first; base; base=base->next) + for (base=t->scene->base.first; base; base=base->next) base->flag &= ~(BA_HAS_RECALC_OB|BA_HAS_RECALC_DATA); /* after transform, remove duplicate keyframes on a frame that resulted from transform */ @@ -3919,15 +3920,15 @@ void special_aftertrans_update(TransInfo *t) /* automatic inserting of keys and unkeyed tagging - only if transform wasn't cancelled (or TFM_DUMMY) */ if (!cancelled && (t->mode != TFM_DUMMY)) { autokeyframe_pose_cb_func(ob, t->mode, targetless_ik); - DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); + DAG_object_flush_update(t->scene, ob, OB_RECALC_DATA); } else if (arm->flag & ARM_DELAYDEFORM) { /* old optimize trick... this enforces to bypass the depgraph */ - DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); + DAG_object_flush_update(t->scene, ob, OB_RECALC_DATA); ob->recalc= 0; // is set on OK position already by recalcData() } else - DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); + DAG_object_flush_update(t->scene, ob, OB_RECALC_DATA); if (t->mode==TFM_BONESIZE || t->mode==TFM_BONE_ENVELOPE) allqueue(REDRAWBUTSEDIT, 0); @@ -4075,7 +4076,7 @@ static void createTransObject(bContext *C, TransInfo *t) for(ik= elems.first; ik; ik= ik->next) { /* weak... this doesn't correct for floating values, giving small errors */ - CFRA= (int)(ik->val/G.scene->r.framelen); + CFRA= (int)(ik->val/t->scene->r.framelen); do_ob_ipo(ob); ObjectToTransData(C, t, td, ob); // does where_is_object() @@ -4098,7 +4099,7 @@ static void createTransObject(bContext *C, TransInfo *t) CFRA= cfraont; ob->ipoflag= ipoflag; - where_is_object(ob); // restore + where_is_object(t->scene, ob); // restore } else { ObjectToTransData(C, t, td, ob); @@ -4305,7 +4306,7 @@ void createTransData(bContext *C, TransInfo *t) // TRANSFORM_FIX_ME // /* temporal...? */ -// G.scene->recalc |= SCE_PRV_CHANGED; /* test for 3d preview */ +// t->scene->recalc |= SCE_PRV_CHANGED; /* test for 3d preview */ } diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index d1993a79bf6..ea79a559f44 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -652,7 +652,7 @@ void recalcData(TransInfo *t) /* update shaded drawmode while transform */ if(t->spacetype==SPACE_VIEW3D && ((View3D*)t->view)->drawtype == OB_SHADED) - reshadeall_displist(); + reshadeall_displist(t->scene); } void drawLine(float *center, float *dir, char axis, short options) @@ -1206,7 +1206,7 @@ void calculatePropRatio(TransInfo *t) if (dist < 0.0f) dist = 0.0f; - switch(G.scene->prop_mode) { + switch(t->scene->prop_mode) { case PROP_SHARP: td->factor= dist*dist; break; @@ -1234,7 +1234,7 @@ void calculatePropRatio(TransInfo *t) } } } - switch(G.scene->prop_mode) { + switch(t->scene->prop_mode) { case PROP_SHARP: strcpy(t->proptext, "(Sharp)"); break; diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index 3ce3b1a8127..0a839649882 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -687,7 +687,7 @@ int getTransformOrientation(bContext *C, float normal[3], float plane[3], int ac bArmature *arm = obedit->data; EditBone *ebone; - for (ebone = G.edbo.first; ebone; ebone=ebone->next) { + for (ebone = arm->edbo->first; ebone; ebone=ebone->next) { if (arm->layer & ebone->layer) { if (ebone->flag & BONE_SELECTED) @@ -767,7 +767,7 @@ int getTransformOrientation(bContext *C, float normal[3], float plane[3], int ac ob = OBACT; if(ob && !(ob->flag & SELECT)) ob = NULL; - for(base= G.scene->base.first; base; base= base->next) { + for(base= scene->base.first; base; base= base->next) { if TESTBASELIB(v3d, base) { if(ob == NULL) { ob= base->object; diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 875b45297bf..d1f641e874b 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -212,7 +212,7 @@ int handleSnapping(TransInfo *t, wmEvent *event) if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift) { /* toggle snap and reinit */ - G.scene->snap_flag ^= SCE_SNAP; + t->scene->snap_flag ^= SCE_SNAP; initSnapping(t); status = 1; } @@ -258,7 +258,7 @@ void resetSnapping(TransInfo *t) int usingSnappingNormal(TransInfo *t) { - if (G.scene->snap_flag & SCE_SNAP_ROTATE) + if (t->scene->snap_flag & SCE_SNAP_ROTATE) { return 1; } @@ -800,7 +800,7 @@ int snapDerivedMesh(TransInfo *t, Object *ob, DerivedMesh *dm, float obmat[][4], if (test == 1) { - switch (G.scene->snap_mode) + switch (t->scene->snap_mode) { case SCE_SNAP_MODE_FACE: { @@ -1194,7 +1194,7 @@ int snapObjects(TransInfo *t, int *dist, float *loc, float *no, int mode) { Object *ob = t->obedit; EditMesh *em = ((Mesh *)t->obedit->data)->edit_mesh; - dm = editmesh_get_derived_cage(t->obedit, em, CD_MASK_BAREMESH); + dm = editmesh_get_derived_cage(t->scene, t->obedit, em, CD_MASK_BAREMESH); retval = snapDerivedMesh(t, ob, dm, ob->obmat, ray_start, ray_normal, t->mval, loc, no, dist, &depth, 1); @@ -1212,14 +1212,14 @@ int snapObjects(TransInfo *t, int *dist, float *loc, float *no, int mode) { if (ob->transflag & OB_DUPLI) { DupliObject *dupli_ob; - ListBase *lb = object_duplilist(G.scene, ob); + ListBase *lb = object_duplilist(t->scene, ob); for(dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) { Object *ob = dupli_ob->ob; if (ob->type == OB_MESH) { - DerivedMesh *dm = mesh_get_derived_final(ob, CD_MASK_BAREMESH); + DerivedMesh *dm = mesh_get_derived_final(t->scene, ob, CD_MASK_BAREMESH); int val; val = snapDerivedMesh(t, ob, dm, dupli_ob->mat, ray_start, ray_normal, t->mval, loc, no, dist, &depth, 0); @@ -1234,7 +1234,7 @@ int snapObjects(TransInfo *t, int *dist, float *loc, float *no, int mode) { } if (ob->type == OB_MESH) { - DerivedMesh *dm = mesh_get_derived_final(ob, CD_MASK_BAREMESH); + DerivedMesh *dm = mesh_get_derived_final(t->scene, ob, CD_MASK_BAREMESH); int val; val = snapDerivedMesh(t, ob, dm, ob->obmat, ray_start, ray_normal, t->mval, loc, no, dist, &depth, 0); |