Fix for [#26665] Force field absorption does not work

* Old bug fix led to all kinds of wrong behavior with "plane" shaped effectors, now things are working properly again.
This commit is contained in:
Janne Karhu 2011-03-29 12:50:43 +00:00
parent e4ef822ecd
commit 74e044065b

@ -687,13 +687,16 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
/* use z-axis as normal*/
normalize_v3_v3(efd->nor, ob->obmat[2]);
/* for vortex the shape chooses between old / new force */
if(eff->pd && eff->pd->shape == PFIELD_SHAPE_PLANE) {
/* efd->loc is closes point on effector xy-plane */
float temp[3], translate[3];
sub_v3_v3v3(temp, point->loc, ob->obmat[3]);
project_v3_v3v3(translate, temp, efd->nor);
add_v3_v3v3(efd->loc, ob->obmat[3], translate);
/* for vortex the shape chooses between old / new force */
if(eff->pd->forcefield == PFIELD_VORTEX)
add_v3_v3v3(efd->loc, ob->obmat[3], translate);
else /* normally efd->loc is closest point on effector xy-plane */
sub_v3_v3v3(efd->loc, point->loc, translate);
}
else {
VECCOPY(efd->loc, ob->obmat[3]);