diff options
author | Ton Roosendaal <ton@blender.org> | 2009-01-02 22:10:35 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-01-02 22:10:35 +0300 |
commit | a6721c60d9bc0897e3ce0dc87264fbc705284397 (patch) | |
tree | 12dd77160bcfaa4b37e85a5e8ed29496bb6c0705 /source/blender/blenkernel | |
parent | 16ca4b572e07aa0f83158c187a7c64b27675d4c9 (diff) |
2.5
From the anti-globalization department:
G.obedit terminated!
Wherever possible, use CTX_data_edit_object(C) to get this
now. It's stored in scene now, and the screen context has
it defined.
Diffstat (limited to 'source/blender/blenkernel')
21 files changed, 192 insertions, 364 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 661686cf2a0..dc932af6518 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -443,14 +443,15 @@ DerivedMesh *mesh_create_derived_no_deform_render(struct Object *ob, float (*vertCos)[3], CustomDataMask dataMask); -DerivedMesh *editmesh_get_derived_base(struct EditMesh *em); -DerivedMesh *editmesh_get_derived_cage(struct EditMesh *em, CustomDataMask dataMask); -DerivedMesh *editmesh_get_derived_cage_and_final(struct EditMesh *em, DerivedMesh **final_r, +DerivedMesh *editmesh_get_derived_base(struct Object *, struct EditMesh *em); +DerivedMesh *editmesh_get_derived_cage(struct Object *, struct EditMesh *em, CustomDataMask dataMask); +DerivedMesh *editmesh_get_derived_cage_and_final(struct Object *, struct EditMesh *em, DerivedMesh **final_r, CustomDataMask dataMask); +void makeDerivedMesh(struct Object *ob, struct EditMesh *em, CustomDataMask dataMask); /* returns an array of deform matrices for crazyspace correction, and the number of modifiers left */ -int editmesh_get_first_deform_matrices(struct EditMesh *em, float (**deformmats)[3][3], +int editmesh_get_first_deform_matrices(struct Object *, struct EditMesh *em, float (**deformmats)[3][3], float (**deformcos)[3]); void weight_to_rgb(float input, float *fr, float *fg, float *fb); diff --git a/source/blender/blenkernel/BKE_displist.h b/source/blender/blenkernel/BKE_displist.h index 6c77ac83e6b..64a451f3b19 100644 --- a/source/blender/blenkernel/BKE_displist.h +++ b/source/blender/blenkernel/BKE_displist.h @@ -85,7 +85,7 @@ extern void addnormalsDispList(struct Object *ob, struct ListBase *lb); extern void count_displist(struct ListBase *lb, int *totvert, int *totface); extern void freedisplist(struct ListBase *lb); extern int displist_has_faces(struct ListBase *lb); -extern void makeDerivedMesh(struct Object *ob, struct EditMesh *em, CustomDataMask dataMask); + extern void makeDispListSurf(struct Object *ob, struct ListBase *dispbase, int forRender); extern void makeDispListCurveTypes(struct Object *ob, int forOrco); extern void makeDispListMBall(struct Object *ob); diff --git a/source/blender/blenkernel/BKE_font.h b/source/blender/blenkernel/BKE_font.h index 3f6b295b9ba..caeddf60638 100644 --- a/source/blender/blenkernel/BKE_font.h +++ b/source/blender/blenkernel/BKE_font.h @@ -67,7 +67,7 @@ struct chartrans *text_to_curve(struct Object *ob, int mode); int style_to_sel(int style, int toggle); int mat_to_sel(void); -int getselection(int *start, int *end); +int getselection(struct Object *ob, int *start, int *end); void chtoutf8(unsigned long c, char *o); void wcs2utf8s(char *dst, wchar_t *src); diff --git a/source/blender/blenkernel/BKE_global.h b/source/blender/blenkernel/BKE_global.h index 4b04a3c45d5..ea0c021652a 100644 --- a/source/blender/blenkernel/BKE_global.h +++ b/source/blender/blenkernel/BKE_global.h @@ -68,7 +68,6 @@ typedef struct Global { struct Main *main; struct Scene *scene; /* denk aan file.c */ struct bScreen *curscreen; - struct Object *obedit; char editModeTitleExtra[64]; /* fonts, allocated global data */ diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 1636859d29b..9c8e88aceb5 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2396,11 +2396,10 @@ static int editmesh_modifier_is_enabled(ModifierData *md, DerivedMesh *dm) return 1; } -static void editmesh_calc_modifiers(EditMesh *em, DerivedMesh **cage_r, +static void editmesh_calc_modifiers(Object *ob, EditMesh *em, DerivedMesh **cage_r, DerivedMesh **final_r, CustomDataMask dataMask) { - Object *ob = G.obedit; ModifierData *md; float (*deformedVerts)[3] = NULL; CustomDataMask mask; @@ -2694,58 +2693,59 @@ static void mesh_build_data(Object *ob, CustomDataMask dataMask) { Mesh *me = ob->data; float min[3], max[3]; - + int needMapping= 0; // + clear_mesh_caches(ob); - if(ob!=G.obedit) { - Object *obact = G.scene->basact?G.scene->basact->object:NULL; - int editing = (FACESEL_PAINT_TEST)|(G.f & G_PARTICLEEDIT); - int needMapping = editing && (ob==obact); - - if( (G.f & G_WEIGHTPAINT) && ob==obact ) { - MCol *wpcol = (MCol*)calc_weightpaint_colors(ob); - int layernum = CustomData_number_of_layers(&me->fdata, CD_MCOL); - int prevactive = CustomData_get_active_layer(&me->fdata, CD_MCOL); - int prevrender = CustomData_get_render_layer(&me->fdata, CD_MCOL); - - /* ugly hack here, we temporarily add a new active mcol layer with - weightpaint colors in it, that is then duplicated in CDDM_from_mesh */ - CustomData_add_layer(&me->fdata, CD_MCOL, CD_ASSIGN, wpcol, me->totface); - CustomData_set_layer_active(&me->fdata, CD_MCOL, layernum); - CustomData_set_layer_render(&me->fdata, CD_MCOL, layernum); - - mesh_calc_modifiers(ob, NULL, &ob->derivedDeform, - &ob->derivedFinal, 0, 1, - needMapping, dataMask, -1); - - CustomData_free_layer_active(&me->fdata, CD_MCOL, me->totface); - CustomData_set_layer_active(&me->fdata, CD_MCOL, prevactive); - CustomData_set_layer_render(&me->fdata, CD_MCOL, prevrender); - } else { - mesh_calc_modifiers(ob, NULL, &ob->derivedDeform, - &ob->derivedFinal, G.rendering, 1, - needMapping, dataMask, -1); - } +// XXX Object *obact = scene->basact?scene->basact->object:NULL; +// int editing = (FACESEL_PAINT_TEST)|(G.f & G_PARTICLEEDIT); +// int needMapping = editing && (ob==obact); +// if( (G.f & G_WEIGHTPAINT) && ob==obact ) { + if(dataMask & CD_MASK_WEIGHTPAINT) { + MCol *wpcol = (MCol*)calc_weightpaint_colors(ob); + int layernum = CustomData_number_of_layers(&me->fdata, CD_MCOL); + int prevactive = CustomData_get_active_layer(&me->fdata, CD_MCOL); + int prevrender = CustomData_get_render_layer(&me->fdata, CD_MCOL); + + /* ugly hack here, we temporarily add a new active mcol layer with + weightpaint colors in it, that is then duplicated in CDDM_from_mesh */ + CustomData_add_layer(&me->fdata, CD_MCOL, CD_ASSIGN, wpcol, me->totface); + CustomData_set_layer_active(&me->fdata, CD_MCOL, layernum); + CustomData_set_layer_render(&me->fdata, CD_MCOL, layernum); + + mesh_calc_modifiers(ob, NULL, &ob->derivedDeform, + &ob->derivedFinal, 0, 1, + needMapping, dataMask, -1); + + CustomData_free_layer_active(&me->fdata, CD_MCOL, me->totface); + CustomData_set_layer_active(&me->fdata, CD_MCOL, prevactive); + CustomData_set_layer_render(&me->fdata, CD_MCOL, prevrender); + } + else { + mesh_calc_modifiers(ob, NULL, &ob->derivedDeform, + &ob->derivedFinal, G.rendering, 1, + needMapping, dataMask, -1); + } + + INIT_MINMAX(min, max); - INIT_MINMAX(min, max); + ob->derivedFinal->getMinMax(ob->derivedFinal, min, max); - ob->derivedFinal->getMinMax(ob->derivedFinal, min, max); + if(!ob->bb) + ob->bb= MEM_callocN(sizeof(BoundBox), "bb"); + boundbox_set_from_min_max(ob->bb, min, max); - if(!ob->bb) - ob->bb= MEM_callocN(sizeof(BoundBox), "bb"); - boundbox_set_from_min_max(ob->bb, min, max); + ob->derivedFinal->needsFree = 0; + ob->derivedDeform->needsFree = 0; + ob->lastDataMask = dataMask; - ob->derivedFinal->needsFree = 0; - ob->derivedDeform->needsFree = 0; - ob->lastDataMask = dataMask; - } } -static void editmesh_build_data(EditMesh *em, CustomDataMask dataMask) +static void editmesh_build_data(Object *obedit, EditMesh *em, CustomDataMask dataMask) { float min[3], max[3]; - clear_mesh_caches(G.obedit); + clear_mesh_caches(obedit); if (em->derivedFinal) { if (em->derivedFinal!=em->derivedCage) { @@ -2760,16 +2760,16 @@ static void editmesh_build_data(EditMesh *em, CustomDataMask dataMask) em->derivedCage = NULL; } - editmesh_calc_modifiers(em, &em->derivedCage, &em->derivedFinal, dataMask); + editmesh_calc_modifiers(obedit, em, &em->derivedCage, &em->derivedFinal, dataMask); em->lastDataMask = dataMask; INIT_MINMAX(min, max); em->derivedFinal->getMinMax(em->derivedFinal, min, max); - if(!G.obedit->bb) - G.obedit->bb= MEM_callocN(sizeof(BoundBox), "bb"); - boundbox_set_from_min_max(G.obedit->bb, min, max); + if(!obedit->bb) + obedit->bb= MEM_callocN(sizeof(BoundBox), "bb"); + boundbox_set_from_min_max(obedit->bb, min, max); em->derivedFinal->needsFree = 0; em->derivedCage->needsFree = 0; @@ -2778,7 +2778,7 @@ static void editmesh_build_data(EditMesh *em, CustomDataMask dataMask) void makeDerivedMesh(Object *ob, EditMesh *em, CustomDataMask dataMask) { if (em) { - editmesh_build_data(em, dataMask); + editmesh_build_data(ob, em, dataMask); } else { mesh_build_data(ob, dataMask); } @@ -2950,7 +2950,7 @@ DerivedMesh *mesh_create_derived_no_deform_render(Object *ob, /***/ -DerivedMesh *editmesh_get_derived_cage_and_final(EditMesh *em, DerivedMesh **final_r, +DerivedMesh *editmesh_get_derived_cage_and_final(Object *obedit, EditMesh *em, DerivedMesh **final_r, CustomDataMask dataMask) { /* if there's no derived mesh or the last data mask used doesn't include @@ -2958,27 +2958,27 @@ DerivedMesh *editmesh_get_derived_cage_and_final(EditMesh *em, DerivedMesh **fin */ if(!em->derivedCage || (em->lastDataMask & dataMask) != dataMask) - editmesh_build_data(em, dataMask); + editmesh_build_data(obedit, em, dataMask); *final_r = em->derivedFinal; return em->derivedCage; } -DerivedMesh *editmesh_get_derived_cage(EditMesh *em, CustomDataMask dataMask) +DerivedMesh *editmesh_get_derived_cage(Object *obedit, EditMesh *em, CustomDataMask dataMask) { /* if there's no derived mesh or the last data mask used doesn't include * the data we need, rebuild the derived mesh */ if(!em->derivedCage || (em->lastDataMask & dataMask) != dataMask) - editmesh_build_data(em, dataMask); + editmesh_build_data(obedit, em, dataMask); return em->derivedCage; } -DerivedMesh *editmesh_get_derived_base(EditMesh *em) +DerivedMesh *editmesh_get_derived_base(Object *obedit, EditMesh *em) { - return getEditMeshDerivedMesh(em, G.obedit, NULL); + return getEditMeshDerivedMesh(em, obedit, NULL); } @@ -3040,9 +3040,8 @@ float *mesh_get_mapped_verts_nors(Object *ob) /* ********* crazyspace *************** */ -int editmesh_get_first_deform_matrices(EditMesh *em, float (**deformmats)[3][3], float (**deformcos)[3]) +int editmesh_get_first_deform_matrices(Object *ob, EditMesh *em, float (**deformmats)[3][3], float (**deformcos)[3]) { - Object *ob = G.obedit; ModifierData *md; DerivedMesh *dm; int i, a, numleft = 0, numVerts = 0; diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 953222960f2..bf88ad16bdf 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -72,7 +72,7 @@ #include <config.h> #endif -static void object_duplilist_recursive(ID *id, Object *ob, ListBase *duplilist, float par_space_mat[][4], int level, int animated); +static void object_duplilist_recursive(ID *id, Object *ob, Object *obedit, ListBase *duplilist, float par_space_mat[][4], int level, int animated); void free_path(Path *path) { @@ -98,9 +98,10 @@ void calc_curvepath(Object *ob) if(ob==NULL || ob->type != OB_CURVE) return; cu= ob->data; - //XXX if(ob==G.obedit) nu= editNurb.first; - //XXX else - nu= cu->nurb.first; + if(cu->editnurb) + nu= cu->editnurb->first; + else + nu= cu->nurb.first; if(cu->path) free_path(cu->path); cu->path= NULL; @@ -298,7 +299,7 @@ static DupliObject *new_dupli_object(ListBase *lb, Object *ob, float mat[][4], i return dob; } -static void group_duplilist(ListBase *lb, Object *ob, int level, int animated) +static void group_duplilist(ListBase *lb, Object *ob, Object *obedit, int level, int animated) { DupliObject *dob; Group *group; @@ -334,7 +335,7 @@ static void group_duplilist(ListBase *lb, Object *ob, int level, int animated) if(go->ob->transflag & OB_DUPLI) { Mat4CpyMat4(dob->ob->obmat, dob->mat); - object_duplilist_recursive((ID *)group, go->ob, lb, ob->obmat, level+1, animated); + object_duplilist_recursive((ID *)group, go->ob, obedit, lb, ob->obmat, level+1, animated); Mat4CpyMat4(dob->ob->obmat, dob->omat); } } @@ -386,7 +387,7 @@ struct vertexDupliData { ListBase *lb; float pmat[4][4]; float obmat[4][4]; /* Only used for dupliverts inside dupligroups, where the ob->obmat is modified */ - Object *ob, *par; + Object *ob, *par, *obedit; float (*orco)[3]; }; @@ -426,12 +427,12 @@ static void vertex_dupli__mapFunc(void *userData, int index, float *co, float *n float tmpmat[4][4]; Mat4CpyMat4(tmpmat, vdd->ob->obmat); Mat4CpyMat4(vdd->ob->obmat, obmat); /* pretend we are really this mat */ - object_duplilist_recursive((ID *)vdd->id, vdd->ob, vdd->lb, obmat, vdd->level+1, vdd->animated); + object_duplilist_recursive((ID *)vdd->id, vdd->ob, vdd->obedit, vdd->lb, obmat, vdd->level+1, vdd->animated); Mat4CpyMat4(vdd->ob->obmat, tmpmat); } } -static void vertex_duplilist(ListBase *lb, ID *id, Object *par, float par_space_mat[][4], int level, int animated) +static void vertex_duplilist(ListBase *lb, ID *id, Object *obedit, Object *par, float par_space_mat[][4], int level, int animated) { Object *ob, *ob_iter; Mesh *me= par->data; @@ -450,7 +451,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Object *par, float par_space_ if(level>MAX_DUPLI_RECUR) return; if(me->edit_mesh) - dm= editmesh_get_derived_cage(me->edit_mesh, CD_MASK_BAREMESH); + dm= editmesh_get_derived_cage(par, me->edit_mesh, CD_MASK_BAREMESH); else dm= mesh_get_derived_deform(par, CD_MASK_BAREMESH); @@ -484,7 +485,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Object *par, float par_space_ oblay = ob_iter->lay; } - if (lay & oblay && G.obedit!=ob_iter) { + if (lay & oblay && obedit!=ob_iter) { ob=ob_iter->parent; while(ob) { if(ob==par) { @@ -505,13 +506,14 @@ static void vertex_duplilist(ListBase *lb, ID *id, Object *par, float par_space_ vdd.animated= animated; vdd.lb= lb; vdd.ob= ob; + vdd.obedit= obedit; vdd.par= par; Mat4CpyMat4(vdd.pmat, pmat); /* mballs have a different dupli handling */ if(ob->type!=OB_MBALL) ob->flag |= OB_DONE; /* doesnt render */ - if(par==G.obedit) { + if(par==obedit) { dm->foreachMappedVert(dm, vertex_dupli__mapFunc, (void*) &vdd); } else { @@ -537,7 +539,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Object *par, float par_space_ dm->release(dm); } -static void face_duplilist(ListBase *lb, ID *id, Object *par, float par_space_mat[][4], int level, int animated) +static void face_duplilist(ListBase *lb, ID *id, Object *obedit, Object *par, float par_space_mat[][4], int level, int animated) { Object *ob, *ob_iter; Base *base = NULL; @@ -562,7 +564,7 @@ static void face_duplilist(ListBase *lb, ID *id, Object *par, float par_space_ma if(me->edit_mesh) { int totvert; - dm= editmesh_get_derived_cage(me->edit_mesh, CD_MASK_BAREMESH); + dm= editmesh_get_derived_cage(par, me->edit_mesh, CD_MASK_BAREMESH); totface= dm->getNumFaces(dm); mface= MEM_mallocN(sizeof(MFace)*totface, "mface temp"); @@ -611,7 +613,7 @@ static void face_duplilist(ListBase *lb, ID *id, Object *par, float par_space_ma oblay = ob_iter->lay; } - if (lay & oblay && G.obedit!=ob_iter) { + if (lay & oblay && obedit!=ob_iter) { ob=ob_iter->parent; while(ob) { if(ob==par) { @@ -704,7 +706,7 @@ static void face_duplilist(ListBase *lb, ID *id, Object *par, float par_space_ma float tmpmat[4][4]; Mat4CpyMat4(tmpmat, ob->obmat); Mat4CpyMat4(ob->obmat, obmat); /* pretend we are really this mat */ - object_duplilist_recursive((ID *)id, ob, lb, ob->obmat, level+1, animated); + object_duplilist_recursive((ID *)id, ob, obedit, lb, ob->obmat, level+1, animated); Mat4CpyMat4(ob->obmat, tmpmat); } } @@ -718,7 +720,7 @@ static void face_duplilist(ListBase *lb, ID *id, Object *par, float par_space_ma else go= go->next; /* group loop */ } - if(par==G.obedit) { + if(par==obedit) { MEM_freeN(mface); MEM_freeN(mvert); } @@ -1020,7 +1022,7 @@ static void font_duplilist(ListBase *lb, Object *par, int level, int animated) } /* ***************************** */ -static void object_duplilist_recursive(ID *id, Object *ob, ListBase *duplilist, float par_space_mat[][4], int level, int animated) +static void object_duplilist_recursive(ID *id, Object *ob, Object *obedit, ListBase *duplilist, float par_space_mat[][4], int level, int animated) { if((ob->transflag & OB_DUPLI)==0) return; @@ -1043,7 +1045,7 @@ static void object_duplilist_recursive(ID *id, Object *ob, ListBase *duplilist, } else if(ob->transflag & OB_DUPLIVERTS) { if(ob->type==OB_MESH) { - vertex_duplilist(duplilist, id, ob, par_space_mat, level+1, animated); + vertex_duplilist(duplilist, id, obedit, ob, par_space_mat, level+1, animated); } else if(ob->type==OB_FONT) { if (GS(id->name)==ID_SCE) { /* TODO - support dupligroups */ @@ -1053,7 +1055,7 @@ static void object_duplilist_recursive(ID *id, Object *ob, ListBase *duplilist, } else if(ob->transflag & OB_DUPLIFACES) { if(ob->type==OB_MESH) - face_duplilist(duplilist, id, ob, par_space_mat, level+1, animated); + face_duplilist(duplilist, id, obedit, ob, par_space_mat, level+1, animated); } else if(ob->transflag & OB_DUPLIFRAMES) { if (GS(id->name)==ID_SCE) { /* TODO - support dupligroups */ @@ -1062,7 +1064,7 @@ static void object_duplilist_recursive(ID *id, Object *ob, ListBase *duplilist, } else if(ob->transflag & OB_DUPLIGROUP) { DupliObject *dob; - group_duplilist(duplilist, ob, level+1, animated); /* now recursive */ + group_duplilist(duplilist, ob, obedit, level+1, animated); /* now recursive */ if (level==0) { for(dob= duplilist->first; dob; dob= dob->next) @@ -1078,7 +1080,7 @@ ListBase *object_duplilist(Scene *sce, Object *ob) { ListBase *duplilist= MEM_mallocN(sizeof(ListBase), "duplilist"); duplilist->first= duplilist->last= NULL; - object_duplilist_recursive((ID *)sce, ob, duplilist, NULL, 0, 0); + object_duplilist_recursive((ID *)sce, ob, sce->obedit, duplilist, NULL, 0, 0); return duplilist; } diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 0b5925a0b38..e7ae7997e9f 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -906,6 +906,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, int numVerts, int deformflag, float (*prevCos)[3], const char *defgrp_name) { + bArmature *arm= armOb->data; bPoseChannel *pchan, **defnrToPC = NULL; MDeformVert *dverts = NULL; bDeformGroup *dg; @@ -921,7 +922,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, int armature_def_nr = -1; int totchan; - if(armOb == G.obedit) return; + if(arm->edbo) return; Mat4Invert(obinv, target->obmat); Mat4CpyMat4(premat, target->obmat); @@ -2280,8 +2281,8 @@ void where_is_pose (Object *ob) if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC)) armature_rebuild_pose(ob, arm); - /* In restposition we read the data from the bones */ - if(ob==G.obedit || (arm->flag & ARM_RESTPOS)) { + /* In editmode or restposition we read the data from the bones */ + if(arm->edbo || (arm->flag & ARM_RESTPOS)) { for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { bone= pchan->bone; diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 8adfe33dfe3..ef740038e57 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -222,17 +222,12 @@ static void clear_global(void) fastshade_free_render(); /* lamps hang otherwise */ free_main(G.main); /* free all lib data */ - if (G.obedit) { -// free_editText(); - } // free_vertexpaint(); G.curscreen= NULL; G.scene= NULL; G.main= NULL; - G.obedit= NULL; - G.f &= ~(G_WEIGHTPAINT + G_VERTEXPAINT + G_FACESELECT + G_PARTICLEEDIT); } diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 7fa4f406c7b..0a58ae59386 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -1136,7 +1136,7 @@ void makebevelcurve(Object *ob, ListBase *disp) disp->first = disp->last = NULL; /* if a font object is being edited, then do nothing */ - if( ob == G.obedit && ob->type == OB_FONT ) return; +// XXX if( ob == obedit && ob->type == OB_FONT ) return; if(cu->bevobj && cu->bevobj!=ob) { if(cu->bevobj->type==OB_CURVE) { @@ -1529,7 +1529,7 @@ void makeBevelList(Object *ob) /* STEP 1: MAKE POLYS */ BLI_freelistN(&(cu->bev)); - if(ob==G.obedit && ob->type!=OB_FONT) nu= editNurb.first; + if(cu->editnurb && ob->type!=OB_FONT) nu= cu->editnurb->first; else nu= cu->nurb.first; while(nu) { diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index f5deda9c3c9..e090a2e4cae 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1764,7 +1764,7 @@ static void flush_update_node(DagNode *node, unsigned int layer, int curtime) for(itA = node->child; itA; itA= itA->next) { all_layer |= itA->lay; /* the relationship is visible */ - if((itA->lay & layer) || (itA->node->ob == G.obedit)) { + if((itA->lay & layer)) { // XXX || (itA->node->ob == obedit) if(itA->node->type==ID_OB) { obc= itA->node->ob; oldflag= obc->recalc; @@ -1795,7 +1795,7 @@ static void flush_update_node(DagNode *node, unsigned int layer, int curtime) } } /* even nicer, we can clear recalc flags... */ - if((all_layer & layer)==0 && (ob != G.obedit)) { + if((all_layer & layer)==0) { // XXX && (ob != obedit)) { /* but existing displaylists or derivedmesh should be freed */ if(ob->recalc & OB_RECALC_DATA) object_free_display(ob); @@ -1809,7 +1809,7 @@ static void flush_update_node(DagNode *node, unsigned int layer, int curtime) /* could merge this in with loop above...? (ton) */ for(itA = node->child; itA; itA= itA->next) { /* the relationship is visible */ - if((itA->lay & layer) || (itA->node->ob == G.obedit)) { + if((itA->lay & layer)) { // XXX || (itA->node->ob == obedit) if(itA->node->type==ID_OB) { obc= itA->node->ob; /* child moves */ diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 3a9e0eb8feb..52ec529b82a 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -662,7 +662,7 @@ void shadeDispList(Base *base) init_fastshade_for_ob(re, ob, &need_orco, mat, imat); - if ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT) { + if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) { /* now we need the normals */ cu= ob->data; @@ -985,7 +985,7 @@ void filldisplist(ListBase *dispbase, ListBase *to) dl= dl->next; } - if(totvert && BLI_edgefill(0, (G.obedit && G.obedit->actcol)?(G.obedit->actcol-1):0)) { + if(totvert && BLI_edgefill(0, 0)) { // XXX (obedit && obedit->actcol)?(obedit->actcol-1):0)) { /* count faces */ tot= 0; @@ -1217,12 +1217,14 @@ static ModifierData *curve_get_tesselate_point(Object *ob, int forRender, int ed return preTesselatePoint; } -void curve_calc_modifiers_pre(Object *ob, ListBase *nurb, int forRender, float (**originalVerts_r)[3], float (**deformedVerts_r)[3], int *numVerts_r) +static void curve_calc_modifiers_pre(Object *ob, int forRender, float (**originalVerts_r)[3], float (**deformedVerts_r)[3], int *numVerts_r) { - int editmode = (!forRender && ob==G.obedit); ModifierData *md = modifiers_getVirtualModifierList(ob); - ModifierData *preTesselatePoint = curve_get_tesselate_point(ob, forRender, editmode); + ModifierData *preTesselatePoint; + Curve *cu= ob->data; + ListBase *nurb= cu->editnurb?cu->editnurb:&cu->nurb; int numVerts = 0; + int editmode = (!forRender && cu->editnurb); float (*originalVerts)[3] = NULL; float (*deformedVerts)[3] = NULL; int required_mode; @@ -1230,9 +1232,11 @@ void curve_calc_modifiers_pre(Object *ob, ListBase *nurb, int forRender, float ( if(forRender) required_mode = eModifierMode_Render; else required_mode = eModifierMode_Realtime; + preTesselatePoint = curve_get_tesselate_point(ob, forRender, editmode); + if(editmode) required_mode |= eModifierMode_Editmode; - if(ob!=G.obedit && do_ob_key(ob)) { + if(cu->editnurb==NULL && do_ob_key(ob)) { deformedVerts = curve_getVertexCos(ob->data, nurb, &numVerts); originalVerts = MEM_dupallocN(deformedVerts); } @@ -1266,17 +1270,21 @@ void curve_calc_modifiers_pre(Object *ob, ListBase *nurb, int forRender, float ( *numVerts_r = numVerts; } -static void curve_calc_modifiers_post(Object *ob, ListBase *nurb, ListBase *dispbase, int forRender, float (*originalVerts)[3], float (*deformedVerts)[3]) +static void curve_calc_modifiers_post(Object *ob, ListBase *dispbase, int forRender, float (*originalVerts)[3], float (*deformedVerts)[3]) { - int editmode = (!forRender && ob==G.obedit); ModifierData *md = modifiers_getVirtualModifierList(ob); - ModifierData *preTesselatePoint = curve_get_tesselate_point(ob, forRender, editmode); + ModifierData *preTesselatePoint; + Curve *cu= ob->data; + ListBase *nurb= cu->editnurb?cu->editnurb:&cu->nurb; DispList *dl; int required_mode; + int editmode = (!forRender && cu->editnurb); if(forRender) required_mode = eModifierMode_Render; else required_mode = eModifierMode_Realtime; + preTesselatePoint = curve_get_tesselate_point(ob, forRender, editmode); + if(editmode) required_mode |= eModifierMode_Editmode; if (preTesselatePoint) { @@ -1371,14 +1379,12 @@ void makeDispListSurf(Object *ob, ListBase *dispbase, int forRender) float (*originalVerts)[3]; float (*deformedVerts)[3]; - if(!forRender && ob==G.obedit) { - //XXX nubase= &editNurb; - } - else { + if(!forRender && cu->editnurb) + nubase= cu->editnurb; + else nubase= &cu->nurb; - } - curve_calc_modifiers_pre(ob, nubase, forRender, &originalVerts, &deformedVerts, &numVerts); + curve_calc_modifiers_pre(ob, forRender, &originalVerts, &deformedVerts, &numVerts); for (nu=nubase->first; nu; nu=nu->next) { if(forRender || nu->hide==0) { @@ -1432,7 +1438,7 @@ void makeDispListSurf(Object *ob, ListBase *dispbase, int forRender) tex_space_curve(cu); } - curve_calc_modifiers_post(ob, nubase, dispbase, forRender, originalVerts, deformedVerts); + curve_calc_modifiers_post(ob, dispbase, forRender, originalVerts, deformedVerts); } void makeDispListCurveTypes(Object *ob, int forOrco) @@ -1450,14 +1456,18 @@ void makeDispListCurveTypes(Object *ob, int forOrco) if(ob->type==OB_SURF) { makeDispListSurf(ob, dispbase, 0); } - else if ELEM(ob->type, OB_CURVE, OB_FONT) { + else if (ELEM(ob->type, OB_CURVE, OB_FONT)) { ListBase dlbev; + ListBase *nubase; float (*originalVerts)[3]; float (*deformedVerts)[3]; - //XXX int obedit= (G.obedit && G.obedit->data==ob->data && G.obedit->type==OB_CURVE); - ListBase *nubase= &cu->nurb; //XXX ListBase *nubase = obedit?&editNurb:&cu->nurb; int numVerts; + if(cu->editnurb) + nubase= cu->editnurb; + else + nubase= &cu->nurb; + BLI_freelistN(&(cu->bev)); if(cu->path) free_path(cu->path); @@ -1465,7 +1475,7 @@ void makeDispListCurveTypes(Object *ob, int forOrco) if(ob->type==OB_FONT) text_to_curve(ob, 0); - if(!forOrco) curve_calc_modifiers_pre(ob, nubase, 0, &originalVerts, &deformedVerts, &numVerts); + if(!forOrco) curve_calc_modifiers_pre(ob, 0, &originalVerts, &deformedVerts, &numVerts); makeBevelList(ob); @@ -1593,7 +1603,7 @@ void makeDispListCurveTypes(Object *ob, int forOrco) if(cu->flag & CU_PATH) calc_curvepath(ob); - if(!forOrco) curve_calc_modifiers_post(ob, nubase, &cu->disp, 0, originalVerts, deformedVerts); + if(!forOrco) curve_calc_modifiers_post(ob, &cu->disp, 0, originalVerts, deformedVerts); tex_space_curve(cu); } diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c index 4fe862e5f52..911efda21bd 100644 --- a/source/blender/blenkernel/intern/exotic.c +++ b/source/blender/blenkernel/intern/exotic.c @@ -19,13 +19,14 @@ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. * All rights reserved. * - * The Original Code is: all of this file. * * Contributor(s): * - Martin DeMello * Added dxf_read_arc, dxf_read_ellipse and dxf_read_lwpolyline * Copyright (C) 2004 by Etheract Software Labs * + * - Blender Foundation + * * ***** END GPL LICENSE BLOCK ***** * * eigen videoscape formaat: @@ -687,190 +688,6 @@ static void read_videoscape_mesh(char *str) //XXX waitcursor(1); } -static void read_radiogour(char *str) -{ - Object *ob; - Mesh *me; - MVert *mvert; - MFace *mface; - FILE *fp; - float *vertdata, *vd, min[3], max[3], cent[3], ftemp; - unsigned int *colv, *colf, *colvertdata; - int itemp, a, b, verts, tottria=0, totquad=0, totedge=0, poly, nr0, nr, first; - int end; - char s[50]; - - fp= fopen(str, "rb"); - if(fp==NULL) { - //XXX error("Can't read file"); - return; - } - - fscanf(fp, "%40s", s); - - fscanf(fp, "%d\n", &verts); - if(verts<=0) { - fclose(fp); - //XXX error("Read error"); - return; - } - - if(verts>MESH_MAX_VERTS) { - //XXX error("too many vertices"); - fclose(fp); - return; - } - - INIT_MINMAX(min, max); - vd= vertdata= MEM_mallocN(sizeof(float)*3*verts, "videoscapelezer"); - colv= colvertdata= MEM_mallocN(verts*sizeof(float), "coldata"); - - for(a=0; a<verts; a++) { - fscanf(fp, "%f %f %f %i", vd, vd+1, vd+2, colv); - DO_MINMAX(vd, min, max); - vd+=3; - colv++; - } - - /* count faces */ - end= 1; - while(end>0) { - end= fscanf(fp,"%d", &poly); - if(end<=0) break; - - if(poly==3) tottria++; - else if(poly==4) totquad++; - else totedge+= poly; - - for(a=0;a<poly;a++) { - end= fscanf(fp,"%d", &nr); - if(end<=0) break; - } - if(end<=0) break; - - } - - if(totedge+tottria+totquad>MESH_MAX_VERTS) { - printf(" var1: %d, var2: %d, var3: %d \n", totedge, tottria, totquad); - //XXX error("too many faces"); - MEM_freeN(vertdata); - MEM_freeN(colvertdata); - fclose(fp); - return; - } - - /* new object */ - ob= add_object(OB_MESH); - me= ob->data; - me->totvert= verts; - me->totface= totedge+tottria+totquad; - me->flag= 0; - - me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, - NULL, me->totvert); - me->mface= CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, - NULL, me->totface); - - /* verts */ - - cent[0]= (min[0]+max[0])/2.0f; - cent[1]= (min[1]+max[1])/2.0f; - cent[2]= (min[2]+max[2])/2.0f; - VECCOPY(ob->loc, cent); - - a= me->totvert; - vd= vertdata; - mvert= me->mvert; - while(a--) { - VecSubf(mvert->co, vd, cent); - mvert++; - vd+= 3; - } - - /* faces */ - if(me->totface) { - rewind(fp); - - fscanf(fp, "%40s", s); - fscanf(fp, "%d\n", &verts); - for(a=0;a<verts;a++) { - fscanf(fp, "%f %f %f %i", &ftemp, &ftemp, &ftemp, &itemp); - } - - a= me->totface; - mface= me->mface; - while(a--) { - end= fscanf(fp,"%d", &poly); - if(end<=0) break; - - if(poly==3 || poly==4) { - fscanf(fp,"%d", &nr); - mface->v1= MIN2(nr, me->totvert-1); - fscanf(fp,"%d", &nr); - mface->v2= MIN2(nr, me->totvert-1); - fscanf(fp,"%d", &nr); - mface->v3= MIN2(nr, me->totvert-1); - if(poly==4) { - if( fscanf(fp,"%d", &nr) <=0 ) break; - mface->v4= MIN2(nr, me->totvert-1); - } - - test_index_face(mface, NULL, 0, poly); - - mface++; - } - else { - if( fscanf(fp,"%d", &nr0) <=0) break; - first= nr0; - for(b=1; b<poly; b++) { - end= fscanf(fp,"%d", &nr); - if(end<=0) break; - nr= MIN2(nr, me->totvert-1); - mface->v1= nr; - mface->v2= nr0; - nr0= nr; - mface++; - a--; - } - mface->v1= first; - mface->v2= nr; - mface->flag= ME_SMOOTH; - - mface++; - if(end<=0) break; - } - } - - /* mcol is 4 colors per face */ - me->mcol= MEM_mallocN(4*sizeof(int)*me->totface, "mcol"); - colf= (unsigned int *)me->mcol; - - a= me->totface; - mface= me->mface; - while(a--) { - - colf[0]= colvertdata[mface->v1]; - colf[1]= colvertdata[mface->v2]; - colf[2]= colvertdata[mface->v3]; - colf[3]= colvertdata[mface->v4]; - - colf+= 4; - mface++; - } - - MEM_freeN(colvertdata); - } - - fclose(fp); - MEM_freeN(vertdata); - - mesh_add_normals_flags(me); - make_edges(me, 0); - - //XXX waitcursor(1); -} - - static void read_videoscape_lamp(char *str) { Object *ob; @@ -2387,16 +2204,8 @@ int BKE_read_exotic(char *name) //XXX waitcursor(1); - if(*s0==GOUR) { - if(G.obedit) { - //XXX error("Unable to perform function in EditMode"); - } else { - read_radiogour(name); - retval = 1; - } - } - else if ELEM4(*s0, DDG1, DDG2, DDG3, DDG4) { - if(G.obedit) { + if(ELEM4(*s0, DDG1, DDG2, DDG3, DDG4)) { + if(0) { // XXX obedit) { //XXX error("Unable to perform function in EditMode"); } else { read_videoscape(name); @@ -2618,7 +2427,7 @@ static void write_videoscape_mesh(Object *ob, char *str) fprintf(fp,"3DG1\n"); - if(G.obedit) { + if(em) { fprintf(fp, "%d\n", G.totvert); diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index a8a97742c24..529d4cc5268 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -622,13 +622,11 @@ static void buildchar(Curve *cu, unsigned long character, CharInfo *info, float } } -int getselection(int *start, int *end) +int getselection(Object *ob, int *start, int *end) { - Curve *cu; + Curve *cu= ob->data; - if (G.obedit==NULL || G.obedit->type != OB_FONT) return 0; - - cu= G.obedit->data; + if (cu->editstr==NULL || ob->type != OB_FONT) return 0; if (cu->selstart == 0) return 0; if (cu->selstart <= cu->selend) { @@ -677,8 +675,8 @@ struct chartrans *text_to_curve(Object *ob, int mode) cu= (Curve *) ob->data; vfont= cu->vfont; - if(cu->str == 0) return 0; - if(vfont == 0) return 0; + if(cu->str == NULL) return 0; + if(vfont == NULL) return 0; // Create unicode string utf8len = utf8slen(cu->str); @@ -731,7 +729,7 @@ struct chartrans *text_to_curve(Object *ob, int mode) if (selboxes) MEM_freeN(selboxes); selboxes = NULL; - if (getselection(&selstart, &selend)) + if (getselection(ob, &selstart, &selend)) selboxes = MEM_callocN((selend-selstart+1)*sizeof(SelBox), "font selboxes"); tb = &(cu->tb[0]); @@ -1113,7 +1111,7 @@ struct chartrans *text_to_curve(Object *ob, int mode) } /* cursor first */ - if(ob==G.obedit) { + if(cu->editstr) { ct= chartransdata+cu->pos; si= (float)sin(ct->rot); co= (float)cos(ct->rot); diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index 3f9143bb405..d397279e63e 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -297,14 +297,17 @@ void make_local_lattice(Lattice *lt) void init_latt_deform(Object *oblatt, Object *ob) { /* we make an array with all differences */ - Lattice *lt = deformLatt = (oblatt==G.obedit)?editLatt:oblatt->data; - BPoint *bp = lt->def; + Lattice *lt= oblatt->data; + BPoint *bp; DispList *dl = find_displist(&oblatt->disp, DL_VERTS); float *co = dl?dl->verts:NULL; float *fp, imat[4][4]; float fu, fv, fw; int u, v, w; + if(lt->editlatt) lt= lt->editlatt; + bp = lt->def; + fp= latticedata= MEM_mallocN(sizeof(float)*3*deformLatt->pntsu*deformLatt->pntsv*deformLatt->pntsw, "latticedata"); /* for example with a particle system: ob==0 */ @@ -868,10 +871,13 @@ void outside_lattice(Lattice *lt) float (*lattice_getVertexCos(struct Object *ob, int *numVerts_r))[3] { - Lattice *lt = (G.obedit==ob)?editLatt:ob->data; - int i, numVerts = *numVerts_r = lt->pntsu*lt->pntsv*lt->pntsw; + Lattice *lt = ob->data; + int i, numVerts; float (*vertexCos)[3] = MEM_mallocN(sizeof(*vertexCos)*numVerts,"lt_vcos"); + if(lt->editlatt) lt= lt->editlatt; + numVerts = *numVerts_r = lt->pntsu*lt->pntsv*lt->pntsw; + for (i=0; i<numVerts; i++) { VECCOPY(vertexCos[i], lt->def[i].vec); } @@ -891,9 +897,10 @@ void lattice_applyVertexCos(struct Object *ob, float (*vertexCos)[3]) void lattice_calc_modifiers(Object *ob) { - float (*vertexCos)[3] = NULL; + Lattice *lt= ob->data; ModifierData *md = modifiers_getVirtualModifierList(ob); - int numVerts, editmode = G.obedit==ob; + float (*vertexCos)[3] = NULL; + int numVerts, editmode = (lt->editlatt!=NULL); freedisplist(&ob->disp); @@ -931,7 +938,8 @@ struct MDeformVert* lattice_get_deform_verts(struct Object *oblatt) { if(oblatt->type == OB_LATTICE) { - Lattice *lt = (oblatt==G.obedit)?editLatt:(Lattice*)oblatt->data; + Lattice *lt = (Lattice*)oblatt->data; + if(lt->editlatt) lt= lt->editlatt; return lt->dvert; } diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index d697ef2de4e..ccbc1cc17a1 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -858,12 +858,13 @@ void delete_material_index() short *totcolp; int a, actcol; - if(G.obedit) { + // if(obedit) { //XXX error("Unable to perform function in EditMode"); - return; - } + // return; + // } + ob= ((G.scene->basact)? (G.scene->basact->object) : 0) ; - if(ob==0 || ob->totcol==0) return; + if(ob==NULL || ob->totcol==0) return; /* take a mesh/curve/mball as starting point, remove 1 index, * AND with all objects that share the ob->data diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index d84ad0a5215..8914ebac4e0 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -287,7 +287,6 @@ int is_basis_mball(Object *ob) */ Object *find_basis_mball(Object *basis) { - extern ListBase editelems; /* editmball.c */ Base *base; Object *ob,*bob= basis; MetaElem *ml=NULL; @@ -302,13 +301,13 @@ Object *find_basis_mball(Object *basis) if (ob->type==OB_MBALL) { if(ob==bob){ + MetaBall *mb= ob->data; + /* if bob object is in edit mode, then dynamic list of all MetaElems * is stored in editelems */ - if(ob==G.obedit) ml= editelems.first; - /* keep track of linked data too! */ - else if(G.obedit && G.obedit->data==ob->data) ml= editelems.first; + if(mb->editelems) ml= mb->editelems->first; /* if bob object is in object mode */ - else ml= ((MetaBall*)ob->data)->elems.first; + else ml= mb->elems.first; } else{ splitIDname(ob->id.name+2, obname, &obnr); @@ -316,13 +315,13 @@ Object *find_basis_mball(Object *basis) /* object ob has to be in same "group" ... it means, that it has to have * same base of its name */ if(strcmp(obname, basisname)==0){ + MetaBall *mb= ob->data; + /* if object is in edit mode, then dynamic list of all MetaElems * is stored in editelems */ - if(ob==G.obedit) ml= editelems.first; - /* keep track of linked data too! */ - else if(bob==G.obedit && bob->data==ob->data) ml= editelems.first; - /* object is in object mode */ - else ml= ((MetaBall*)ob->data)->elems.first; + if(mb->editelems) ml= mb->editelems->first; + /* if bob object is in object mode */ + else ml= mb->elems.first; if(obnr<basisnr){ if(!(ob->flag & OB_FROMDUPLI)){ @@ -1454,7 +1453,6 @@ void polygonize(PROCESS *mbproc, MetaBall *mb) float init_meta(Object *ob) /* return totsize */ { - extern ListBase editelems; /* editmball.c */ Base *base; Object *bob; MetaBall *mb; @@ -1483,8 +1481,7 @@ float init_meta(Object *ob) /* return totsize */ mat= imat= 0; mb= ob->data; - if(ob==G.obedit) ml= editelems.first; - else if(G.obedit && G.obedit->type==OB_MBALL && G.obedit->data==mb) ml= editelems.first; + if(mb->editelems) ml= mb->editelems->first; else ml= mb->elems.first; } else { @@ -1494,8 +1491,8 @@ float init_meta(Object *ob) /* return totsize */ splitIDname(bob->id.name+2, name, &nr); if( strcmp(obname, name)==0 ) { mb= bob->data; - if(G.obedit && G.obedit->type==OB_MBALL && G.obedit->data==mb) - ml= editelems.first; + + if(mb->editelems) ml= mb->editelems->first; else ml= mb->elems.first; } } diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 38e8b1b1abe..30f065a40a0 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -7567,7 +7567,7 @@ static void meshdeformModifier_do( /* get cage derivedmesh */ if(me->edit_mesh) { - tmpdm= editmesh_get_derived_cage_and_final(me->edit_mesh, &cagedm, 0); + tmpdm= editmesh_get_derived_cage_and_final(ob, me->edit_mesh, &cagedm, 0); if(tmpdm) tmpdm->release(tmpdm); } @@ -8718,8 +8718,9 @@ int modifiers_isDeformed(Object *ob) ModifierData *md = modifiers_getVirtualModifierList(ob); for (; md; md=md->next) { - if(ob==G.obedit && (md->mode & eModifierMode_Editmode)==0); - else if(modifier_isDeformer(md)) + // XXX if(ob==obedit && (md->mode & eModifierMode_Editmode)==0); + // else + if(modifier_isDeformer(md)) return 1; } return 0; diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 99e4083f68d..a1566b1a0ed 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -1285,7 +1285,7 @@ void multires_set_level(Object *ob, Mesh *me, const int render) /* Update the edge visibility flags to only show edges on or below the edgelvl */ void multires_edge_level_update(Object *ob, Mesh *me) { - if(!G.obedit) { + if(!me->edit_mesh) { MultiresLevel *cr_lvl= BLI_findlink(&me->mr->levels,me->mr->current-1); MultiresLevel *edge_lvl= BLI_findlink(&me->mr->levels,me->mr->edgelvl-1); const int threshold= edge_lvl->totedge * pow(2, me->mr->current - me->mr->edgelvl); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index e52a4a4f8e0..d9101feb204 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1706,7 +1706,7 @@ static void give_parvert(Object *par, int nr, float *vec) } } } - else if ELEM(par->type, OB_CURVE, OB_SURF) { + else if (ELEM(par->type, OB_CURVE, OB_SURF)) { Nurb *nu; Curve *cu; BPoint *bp; @@ -1714,8 +1714,10 @@ static void give_parvert(Object *par, int nr, float *vec) int found= 0; cu= par->data; - nu= cu->nurb.first; - //XXX if(par==G.obedit) nu= editNurb.first; + if(cu->editnurb) + nu= cu->editnurb->first; + else + nu= cu->nurb.first; count= 0; while(nu && !found) { @@ -1755,7 +1757,7 @@ static void give_parvert(Object *par, int nr, float *vec) DispList *dl = find_displist(&par->disp, DL_VERTS); float *co = dl?dl->verts:NULL; - if(par==G.obedit) latt= editLatt; + if(latt->editlatt) latt= latt->editlatt; a= latt->pntsu*latt->pntsv*latt->pntsw; count= 0; @@ -1782,7 +1784,7 @@ static void ob_parvert3(Object *ob, Object *par, float mat[][4]) /* in local ob space */ Mat4One(mat); - if ELEM4(par->type, OB_MESH, OB_SURF, OB_CURVE, OB_LATTICE) { + if (ELEM4(par->type, OB_MESH, OB_SURF, OB_CURVE, OB_LATTICE)) { give_parvert(par, ob->par1, v1); give_parvert(par, ob->par2, v2); @@ -2163,7 +2165,7 @@ BoundBox *object_get_boundbox(Object *ob) if(ob->type==OB_MESH) { bb = mesh_get_bb(ob); } - else if ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT) { + else if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) { bb= ( (Curve *)ob->data )->bb; } else if(ob->type==OB_MBALL) { diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 4f7f5402d0d..3ad17790f45 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -4334,8 +4334,8 @@ static void particles_fluid_step(Object *ob, ParticleSystem *psys, int cfra) int readMask, activeParts = 0, fileParts = 0; gzFile gzf; - if(ob==G.obedit) // off... - return; +// XXX if(ob==G.obedit) // off... +// return; // ok, start loading strcpy(filename, fss->surfdataPath); diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c index 81788cd24a8..3b29409d75c 100644 --- a/source/blender/blenkernel/intern/shrinkwrap.c +++ b/source/blender/blenkernel/intern/shrinkwrap.c @@ -98,7 +98,7 @@ DerivedMesh *object_get_derived_final(Object *ob, CustomDataMask dataMask) if (me->edit_mesh) { DerivedMesh *final = NULL; - editmesh_get_derived_cage_and_final(me->edit_mesh, &final, dataMask); + editmesh_get_derived_cage_and_final(ob, me->edit_mesh, &final, dataMask); return final; } else @@ -237,8 +237,9 @@ void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc) //Setup nearest nearest.index = -1; nearest.dist = FLT_MAX; - +#ifndef __APPLE__ #pragma omp parallel for default(none) private(i) firstprivate(nearest) shared(treeData,calc) schedule(static) +#endif for(i = 0; i<calc->numVerts; ++i) { float *co = calc->vertexCos[i]; @@ -443,7 +444,9 @@ do //Now, everything is ready to project the vertexs! +#ifndef __APPLE__ #pragma omp parallel for private(i,hit) schedule(static) +#endif for(i = 0; i<calc->numVerts; ++i) { float *co = calc->vertexCos[i]; @@ -547,7 +550,9 @@ void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc) //Find the nearest vertex +#ifndef __APPLE__ #pragma omp parallel for default(none) private(i) firstprivate(nearest) shared(calc,treeData) schedule(static) +#endif for(i = 0; i<calc->numVerts; ++i) { float *co = calc->vertexCos[i]; |