From 49b3e0928fe16b68a847230f2278d4411fd7eef8 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Wed, 16 Nov 2005 18:26:56 +0000 Subject: [PATCH] Fix for #3409 Vertex-parenting a forcefield to a softbody caused eternal loop :) It is partially because of the timing system (=weak) but actually also because derivedmesh calls could also not build meshes all the time! --- source/blender/blenkernel/intern/object.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index af17ebcfc25..0b363216a53 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1186,15 +1186,15 @@ void give_parvert(Object *par, int nr, float *vec) } } else { - int needsFree; - DerivedMesh *dm = mesh_get_derived_deform(par, &needsFree); + /* maybe this is against the derivedmesh philosphy, but where_is_object is called + by code that is called by build_mesh... (when ob->sf!=0.0) so it can cycle eternally */ + DerivedMesh *dm = par->derivedDeform; //mesh_get_derived_deform(par, &needsFree); + + if(dm) { + if(nr >= dm->getNumVerts(dm)) nr= 0; - if(nr >= dm->getNumVerts(dm)) nr= 0; - - dm->getVertCo(dm, nr, vec); - - if (needsFree) - dm->release(dm); + dm->getVertCo(dm, nr, vec); + } } } else if ELEM(par->type, OB_CURVE, OB_SURF) {