* Added a new, slightly experimental force field type: 'Spin'.
It works similarly to Vortex, but it's a more controllable - it doesn't send the particles off accelerating into space, but keeps them spinning around the Z axis of the force field object. This is safe in the branch, but Jahka if you have any feedback, I'd be curious to hear :)
This commit is contained in:
@@ -420,6 +420,19 @@ void do_physical_effector(Object *ob, float *opco, short type, float force_val,
|
||||
VecMulf(mag_vec,force_val*distance*falloff);
|
||||
VecAddf(field,field,mag_vec);
|
||||
|
||||
break;
|
||||
case PFIELD_SPIN:
|
||||
Projf(temp, velocity, eff_vel);
|
||||
|
||||
Crossf(mag_vec,eff_vel,vec_to_part);
|
||||
|
||||
Normalize(mag_vec);
|
||||
|
||||
VecMulf(mag_vec,force_val*distance*falloff);
|
||||
VecAddf(mag_vec, mag_vec, temp);
|
||||
|
||||
VecCopyf(velocity, mag_vec);
|
||||
|
||||
break;
|
||||
case PFIELD_MAGNET:
|
||||
if(planar)
|
||||
|
||||
@@ -210,6 +210,7 @@ typedef struct SoftBody {
|
||||
#define PFIELD_HARMONIC 7
|
||||
#define PFIELD_CHARGE 8
|
||||
#define PFIELD_LENNARDJ 9
|
||||
#define PFIELD_SPIN 10
|
||||
|
||||
|
||||
/* pd->flag: various settings */
|
||||
|
||||
@@ -3409,8 +3409,8 @@ static void object_panel_fields(Object *ob)
|
||||
sprintf(menustr, "Field Type%%t|None%%x0|Spherical%%x%d|Wind%%x%d|Vortex%%x%d|Curve Guide%%x%d|Magnetic%%x%d|Harmonic%%x%d|Texture%%x%d|Charge%%x%d|Lennard-Jones%%x%d",
|
||||
PFIELD_FORCE, PFIELD_WIND, PFIELD_VORTEX, PFIELD_GUIDE, PFIELD_MAGNET, PFIELD_HARMONIC, PFIELD_TEXTURE, PFIELD_CHARGE, PFIELD_LENNARDJ);
|
||||
else
|
||||
sprintf(menustr, "Field Type%%t|None%%x0|Spherical%%x%d|Wind%%x%d|Vortex%%x%d|Magnetic%%x%d|Harmonic%%x%d|Texture%%x%d|Charge%%x%d|Lennard-Jones%%x%d",
|
||||
PFIELD_FORCE, PFIELD_WIND, PFIELD_VORTEX, PFIELD_MAGNET, PFIELD_HARMONIC, PFIELD_TEXTURE, PFIELD_CHARGE, PFIELD_LENNARDJ);
|
||||
sprintf(menustr, "Field Type%%t|None%%x0|Spherical%%x%d|Wind%%x%d|Vortex%%x%d|Spin%%x%d|Magnetic%%x%d|Harmonic%%x%d|Texture%%x%d|Charge%%x%d|Lennard-Jones%%x%d",
|
||||
PFIELD_FORCE, PFIELD_WIND, PFIELD_VORTEX, PFIELD_SPIN, PFIELD_MAGNET, PFIELD_HARMONIC, PFIELD_TEXTURE, PFIELD_CHARGE, PFIELD_LENNARDJ);
|
||||
|
||||
if(pd->forcefield==PFIELD_FORCE) tipstr= "Object center attracts or repels particles (On shared object layers)";
|
||||
else if(pd->forcefield==PFIELD_WIND) tipstr= "Constant force applied in direction of Object Z axis (On shared object layers)";
|
||||
|
||||
Reference in New Issue
Block a user