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:
authorTon Roosendaal <ton@blender.org>2009-01-04 17:14:06 +0300
committerTon Roosendaal <ton@blender.org>2009-01-04 17:14:06 +0300
commitf7cb86df3a9ceccc4d649e42735732a608169157 (patch)
tree558a9ba43708a2213b1afa8f46d79f5daa140bc6 /source/blender/editors
parent74f9e98c828c17910405092785633373d4ae88e8 (diff)
2.5
Think global, act local! The old favorite G.scene gone! Man... that took almost 2 days. Also removed G.curscreen and G.edbo. Not everything could get solved; here's some notes. - modifiers now store current scene in ModifierData. This is not meant for permanent, but it can probably stick there until we cleaned the anim system and depsgraph to cope better with timing issues. - Game engine G.scene should become an argument for staring it. Didn't solve this yet. - Texture nodes should get scene cfra, but the current implementation is too tightly wrapped to do it easily.
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);