Disconnect hair was using wrong derived mesh for the space conversion.

This commit is contained in:
Janne Karhu 2009-09-11 00:23:08 +00:00
parent d1314c3db5
commit 71907c7e4c

@ -729,7 +729,6 @@ static void disconnect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
PTCacheEdit *edit = psys->edit;
PTCacheEditPoint *point = edit ? edit->points : NULL;
PTCacheEditKey *ekey = NULL;
DerivedMesh *dm = NULL;
HairKey *key;
int i, k;
float hairmat[4][4];
@ -740,18 +739,13 @@ static void disconnect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
if(!psys->part || psys->part->type != PART_HAIR)
return;
if(psmd->dm->deformedOnly)
dm= psmd->dm;
else
dm= mesh_get_derived_deform(scene, ob, CD_MASK_BAREMESH);
for(i=0; i<psys->totpart; i++,pa++) {
if(point) {
ekey = point->keys;
point++;
}
psys_mat_hair_to_global(ob, dm, psys->part->from, pa, hairmat);
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, hairmat);
for(k=0,key=pa->hair; k<pa->totkey; k++,key++) {
Mat4MulVecfl(hairmat,key->co);
@ -765,9 +759,6 @@ static void disconnect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
psys_free_path_cache(psys, psys->edit);
if(!psmd->dm->deformedOnly)
dm->release(dm);
psys->flag |= PSYS_GLOBAL_HAIR;
PE_update_object(scene, ob, 0);