Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/boids.c')
-rw-r--r--source/blender/blenkernel/intern/boids.c48
1 files changed, 21 insertions, 27 deletions
diff --git a/source/blender/blenkernel/intern/boids.c b/source/blender/blenkernel/intern/boids.c
index b521ec41cba..82602a6951d 100644
--- a/source/blender/blenkernel/intern/boids.c
+++ b/source/blender/blenkernel/intern/boids.c
@@ -34,19 +34,13 @@
#include "MEM_guardedalloc.h"
-#include "DNA_particle_types.h"
-#include "DNA_modifier_types.h"
#include "DNA_object_force.h"
-#include "DNA_object_types.h"
#include "DNA_scene_types.h"
-#include "DNA_boid_types.h"
-#include "DNA_listBase.h"
#include "BLI_rand.h"
#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_kdtree.h"
-#include "BLI_kdopbvh.h"
#include "BKE_collision.h"
#include "BKE_effect.h"
#include "BKE_boids.h"
@@ -147,7 +141,7 @@ static int rule_goal_avoid(BoidRule *rule, BoidBrainData *bbd, BoidValues *val,
get_effector_data(eff, &efd, &epoint, 1);
mul_v3_fl(efd.vel, efd.distance / (val->max_speed * bbd->timestep));
- add_v3_v3v3(efd.loc, efd.loc, efd.vel);
+ add_v3_v3(efd.loc, efd.vel);
sub_v3_v3v3(efd.vec_to_point, pa->prev_state.co, efd.loc);
efd.distance = len_v3(efd.vec_to_point);
}
@@ -361,7 +355,7 @@ static int rule_separate(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Pa
if(neighbors > 1 && ptn[1].dist!=0.0f) {
sub_v3_v3v3(vec, pa->prev_state.co, bbd->sim->psys->particles[ptn[1].index].state.co);
mul_v3_fl(vec, (2.0f * val->personal_space * pa->size - ptn[1].dist) / ptn[1].dist);
- add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
+ add_v3_v3(bbd->wanted_co, vec);
bbd->wanted_speed = val->max_speed;
len = ptn[1].dist;
ret = 1;
@@ -378,7 +372,7 @@ static int rule_separate(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Pa
if(neighbors > 0 && ptn[0].dist < len) {
sub_v3_v3v3(vec, pa->prev_state.co, ptn[0].co);
mul_v3_fl(vec, (2.0f * val->personal_space * pa->size - ptn[0].dist) / ptn[1].dist);
- add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
+ add_v3_v3(bbd->wanted_co, vec);
bbd->wanted_speed = val->max_speed;
len = ptn[0].dist;
ret = 1;
@@ -399,18 +393,18 @@ static int rule_flock(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Parti
if(neighbors > 1) {
for(n=1; n<neighbors; n++) {
- add_v3_v3v3(loc, loc, bbd->sim->psys->particles[ptn[n].index].prev_state.co);
- add_v3_v3v3(vec, vec, bbd->sim->psys->particles[ptn[n].index].prev_state.vel);
+ add_v3_v3(loc, bbd->sim->psys->particles[ptn[n].index].prev_state.co);
+ add_v3_v3(vec, bbd->sim->psys->particles[ptn[n].index].prev_state.vel);
}
mul_v3_fl(loc, 1.0f/((float)neighbors - 1.0f));
mul_v3_fl(vec, 1.0f/((float)neighbors - 1.0f));
- sub_v3_v3v3(loc, loc, pa->prev_state.co);
- sub_v3_v3v3(vec, vec, pa->prev_state.vel);
+ sub_v3_v3(loc, pa->prev_state.co);
+ sub_v3_v3(vec, pa->prev_state.vel);
- add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
- add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, loc);
+ add_v3_v3(bbd->wanted_co, vec);
+ add_v3_v3(bbd->wanted_co, loc);
bbd->wanted_speed = len_v3(bbd->wanted_co);
ret = 1;
@@ -573,13 +567,13 @@ static int rule_average_speed(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
mul_v3_fl(bbd->wanted_co, 1.1f);
- add_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
+ add_v3_v3(bbd->wanted_co, vec);
/* leveling */
if(asbr->level > 0.0f && psys_uses_gravity(bbd->sim)) {
project_v3_v3v3(vec, bbd->wanted_co, bbd->sim->scene->physics_settings.gravity);
mul_v3_fl(vec, asbr->level);
- sub_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
+ sub_v3_v3(bbd->wanted_co, vec);
}
}
else {
@@ -596,7 +590,7 @@ static int rule_average_speed(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
if(asbr->level > 0.0f && psys_uses_gravity(bbd->sim)) {
project_v3_v3v3(vec, bbd->wanted_co, bbd->sim->scene->physics_settings.gravity);
mul_v3_fl(vec, asbr->level);
- sub_v3_v3v3(bbd->wanted_co, bbd->wanted_co, vec);
+ sub_v3_v3(bbd->wanted_co, vec);
}
}
@@ -754,7 +748,7 @@ static Object *boid_find_ground(BoidBrainData *bbd, ParticleData *pa, float *gro
/* take surface velocity into account */
closest_point_on_surface(surmd, pa->state.co, x, NULL, v);
- add_v3_v3v3(x, x, v);
+ add_v3_v3(x, v);
/* get actual position on surface */
closest_point_on_surface(surmd, x, ground_co, ground_nor, NULL);
@@ -771,10 +765,10 @@ static Object *boid_find_ground(BoidBrainData *bbd, ParticleData *pa, float *gro
if(!bbd->sim->colliders)
return NULL;
- VECCOPY(col.co1, pa->state.co);
- VECCOPY(col.co2, pa->state.co);
- add_v3_v3v3(col.co1, col.co1, zvec);
- sub_v3_v3v3(col.co2, col.co2, zvec);
+ copy_v3_v3(col.co1, pa->state.co);
+ copy_v3_v3(col.co2, pa->state.co);
+ add_v3_v3(col.co1, zvec);
+ sub_v3_v3(col.co2, zvec);
sub_v3_v3v3(ray_dir, col.co2, col.co1);
col.t = 0.0f;
hit.index = -1;
@@ -962,7 +956,7 @@ void boid_brain(BoidBrainData *bbd, int p, ParticleData *pa)
int n = 0;
for(rule = state->rules.first; rule; rule=rule->next) {
if(apply_boid_rule(bbd, rule, &val, pa, -1.0f)) {
- add_v3_v3v3(wanted_co, wanted_co, bbd->wanted_co);
+ add_v3_v3(wanted_co, bbd->wanted_co);
wanted_speed += bbd->wanted_speed;
n++;
bbd->wanted_co[0]=bbd->wanted_co[1]=bbd->wanted_co[2]=bbd->wanted_speed=0.0f;
@@ -1211,7 +1205,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
mul_v3_fl(force, length);
}
- add_v3_v3v3(acc, acc, force);
+ add_v3_v3(acc, force);
/* store smoothed acceleration for nice banking etc. */
VECADDFAC(bpa->data.acc, bpa->data.acc, acc, dtime);
@@ -1228,8 +1222,8 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
VECCOPY(bvec, pa->prev_state.vel);
mul_v3_fl(bvec, dtime);
- add_v3_v3v3(dvec, dvec, bvec);
- add_v3_v3v3(pa->state.co, pa->state.co, dvec);
+ add_v3_v3(dvec, bvec);
+ add_v3_v3(pa->state.co, dvec);
VECADDFAC(pa->state.vel, pa->state.vel, acc, dtime);