Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/animation/anim_deps.c2
-rw-r--r--source/blender/editors/animation/keyframing.c39
-rw-r--r--source/blender/editors/include/ED_view3d.h5
-rw-r--r--source/blender/editors/mesh/editface.c12
-rw-r--r--source/blender/editors/mesh/editmesh.c1
-rw-r--r--source/blender/editors/mesh/editmesh_add.c22
-rw-r--r--source/blender/editors/mesh/editmesh_loop.c4
-rw-r--r--source/blender/editors/mesh/editmesh_mods.c62
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c109
-rw-r--r--source/blender/editors/mesh/meshtools.c7
-rw-r--r--source/blender/editors/object/object_edit.c85
-rw-r--r--source/blender/editors/screen/screen_edit.c8
-rw-r--r--source/blender/editors/screen/screen_intern.h3
-rw-r--r--source/blender/editors/screen/screen_ops.c2
-rw-r--r--source/blender/editors/space_buttons/buttons_scene.c153
-rw-r--r--source/blender/editors/space_node/drawnode.c14
-rw-r--r--source/blender/editors/space_node/node_edit.c10
-rw-r--r--source/blender/editors/space_outliner/outliner.c6
-rw-r--r--source/blender/editors/space_view3d/drawarmature.c24
-rw-r--r--source/blender/editors/space_view3d/drawmesh.c2
-rw-r--r--source/blender/editors/space_view3d/drawobject.c88
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c14
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_intern.h4
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c12
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c169
-rw-r--r--source/blender/editors/transform/transform.c10
-rw-r--r--source/blender/editors/transform/transform_conversions.c33
-rw-r--r--source/blender/editors/transform/transform_generics.c6
-rw-r--r--source/blender/editors/transform/transform_orientations.c4
-rw-r--r--source/blender/editors/transform/transform_snap.c14
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);