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.

This commit is contained in:
Janne Karhu
2008-08-25 11:46:55 +00:00
parent afa8a76f46
commit d37f0325ca

View File

@@ -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;