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/space_view3d/drawobject.c
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/space_view3d/drawobject.c')
-rw-r--r--source/blender/editors/space_view3d/drawobject.c88
1 files changed, 44 insertions, 44 deletions
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)