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-02 22:10:35 +0300
committerTon Roosendaal <ton@blender.org>2009-01-02 22:10:35 +0300
commita6721c60d9bc0897e3ce0dc87264fbc705284397 (patch)
tree12dd77160bcfaa4b37e85a5e8ed29496bb6c0705 /source/blender/blenkernel/intern
parent16ca4b572e07aa0f83158c187a7c64b27675d4c9 (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/intern')
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c111
-rw-r--r--source/blender/blenkernel/intern/anim.c46
-rw-r--r--source/blender/blenkernel/intern/armature.c7
-rw-r--r--source/blender/blenkernel/intern/blender.c5
-rw-r--r--source/blender/blenkernel/intern/curve.c4
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c6
-rw-r--r--source/blender/blenkernel/intern/displist.c52
-rw-r--r--source/blender/blenkernel/intern/exotic.c201
-rw-r--r--source/blender/blenkernel/intern/font.c16
-rw-r--r--source/blender/blenkernel/intern/lattice.c22
-rw-r--r--source/blender/blenkernel/intern/material.c9
-rw-r--r--source/blender/blenkernel/intern/mball.c27
-rw-r--r--source/blender/blenkernel/intern/modifier.c7
-rw-r--r--source/blender/blenkernel/intern/multires.c2
-rw-r--r--source/blender/blenkernel/intern/object.c14
-rw-r--r--source/blender/blenkernel/intern/particle_system.c4
-rw-r--r--source/blender/blenkernel/intern/shrinkwrap.c9
17 files changed, 185 insertions, 357 deletions
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];