diff options
author | Janne Karhu <jhkarh@gmail.com> | 2008-08-25 15:46:55 +0400 |
---|---|---|
committer | Janne Karhu <jhkarh@gmail.com> | 2008-08-25 15:46:55 +0400 |
commit | d37f0325cabd6525dd8fdee626db1d685c043d33 (patch) | |
tree | bacc886f7b1efdea12b6931e4033cce30699e6ab /source/blender/blenkernel/intern/effect.c | |
parent | afa8a76f4600565fd3d44d2ef272451044480a99 (diff) |
Effector fall-off power was off by one for spherical, magnet, harmonic and charge fields. For example a square fall-off was reduced to linear etc.
Diffstat (limited to 'source/blender/blenkernel/intern/effect.c')
-rw-r--r-- | source/blender/blenkernel/intern/effect.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index 0842e55a0ea..c4db9ab30a8 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -406,12 +406,15 @@ void do_physical_effector(Object *ob, float *opco, short type, float force_val, else VecCopyf(mag_vec,vec_to_part); + Normalize(mag_vec); + VecMulf(mag_vec,force_val*falloff); VecAddf(field,field,mag_vec); break; case PFIELD_VORTEX: Crossf(mag_vec,eff_vel,vec_to_part); + Normalize(mag_vec); VecMulf(mag_vec,force_val*distance*falloff); @@ -425,6 +428,8 @@ void do_physical_effector(Object *ob, float *opco, short type, float force_val, /* magnetic field of a moving charge */ Crossf(temp,eff_vel,vec_to_part); + Normalize(temp); + Crossf(temp2,velocity,temp); VecAddf(mag_vec,mag_vec,temp2); @@ -437,6 +442,8 @@ void do_physical_effector(Object *ob, float *opco, short type, float force_val, else VecCopyf(mag_vec,vec_to_part); + Normalize(mag_vec); + VecMulf(mag_vec,force_val*falloff); VecSubf(field,field,mag_vec); @@ -451,6 +458,8 @@ void do_physical_effector(Object *ob, float *opco, short type, float force_val, else VecCopyf(mag_vec,vec_to_part); + Normalize(mag_vec); + VecMulf(mag_vec,charge*force_val*falloff); VecAddf(field,field,mag_vec); break; |