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:
authorCampbell Barton <ideasman42@gmail.com>2018-06-17 18:10:19 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-06-17 18:10:19 +0300
commit06a1a66a9b6f120867d3bbebe3928744ec8e3495 (patch)
tree42e827a3cf58eb76474e479206b02a8d97dd3bf7 /source/blender/blenkernel/intern/boids.c
parent61d27db35967710421ab92748e09624db068258d (diff)
parenta24b4e6090057479796e914bc603119b12f6ca06 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/blenkernel/intern/boids.c')
-rw-r--r--source/blender/blenkernel/intern/boids.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/source/blender/blenkernel/intern/boids.c b/source/blender/blenkernel/intern/boids.c
index eb5cdd02fe5..8fdaf183b06 100644
--- a/source/blender/blenkernel/intern/boids.c
+++ b/source/blender/blenkernel/intern/boids.c
@@ -277,7 +277,7 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
sub_v3_v3v3(loc, co1, co2);
sub_v3_v3v3(vec, vel1, vel2);
-
+
inp = dot_v3v3(vec, vec);
/* velocities not parallel */
@@ -287,7 +287,7 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
if (t > 0.0f && t < t_min) {
madd_v3_v3fl(co1, vel1, t);
madd_v3_v3fl(co2, vel2, t);
-
+
sub_v3_v3v3(vec, co2, co1);
len = normalize_v3(vec);
@@ -327,7 +327,7 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
sub_v3_v3v3(loc, co1, co2);
sub_v3_v3v3(vec, vel1, vel2);
-
+
inp = dot_v3v3(vec, vec);
/* velocities not parallel */
@@ -337,7 +337,7 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
if (t > 0.0f && t < t_min) {
madd_v3_v3fl(co1, vel1, t);
madd_v3_v3fl(co2, vel2, t);
-
+
sub_v3_v3v3(vec, co2, co1);
len = normalize_v3(vec);
@@ -395,7 +395,7 @@ static int rule_separate(BoidRule *UNUSED(rule), BoidBrainData *bbd, BoidValues
neighbors = BLI_kdtree_range_search(
epsys->tree, pa->prev_state.co,
&ptn, 2.0f * val->personal_space * pa->size);
-
+
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);
@@ -497,13 +497,13 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
sub_v3_v3v3(vec, flbr->loc, flbr->oloc);
mul_v3_fl(vec, 1.0f/bbd->timestep);
}
-
+
/* fac is seconds behind leader */
madd_v3_v3fl(loc, vec, -flbr->distance);
sub_v3_v3v3(bbd->wanted_co, loc, pa->prev_state.co);
bbd->wanted_speed = len_v3(bbd->wanted_co);
-
+
ret = 1;
}
else if (p % n) {
@@ -560,13 +560,13 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
copy_v3_v3(vec, bbd->sim->psys->particles[p - p%n].prev_state.vel);
copy_v3_v3(loc, bbd->sim->psys->particles[p - p%n].prev_state.co);
}
-
+
/* fac is seconds behind leader */
madd_v3_v3fl(loc, vec, -flbr->distance);
sub_v3_v3v3(bbd->wanted_co, loc, pa->prev_state.co);
bbd->wanted_speed = len_v3(bbd->wanted_co);
-
+
ret = 1;
}
@@ -612,7 +612,7 @@ static int rule_average_speed(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
bbd->wanted_co[1] = 2.0f*(0.5f - BLI_rng_get_float(bbd->rng));
bbd->wanted_co[2] = 2.0f*(0.5f - BLI_rng_get_float(bbd->rng));
}
-
+
/* leveling */
if (asbr->level > 0.0f && psys_uses_gravity(bbd->sim)) {
project_v3_v3v3(vec, bbd->wanted_co, bbd->sim->scene->physics_settings.gravity);
@@ -622,7 +622,7 @@ static int rule_average_speed(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
}
bbd->wanted_speed = asbr->speed * val->max_speed;
-
+
return 1;
}
static int rule_fight(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, ParticleData *pa)
@@ -662,7 +662,7 @@ static int rule_fight(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Parti
neighbors = BLI_kdtree_range_search(
epsys->tree, pa->prev_state.co,
&ptn, fbr->distance);
-
+
health = 0.0f;
for (n=0; n<neighbors; n++) {
@@ -776,7 +776,7 @@ static Object *boid_find_ground(BoidBrainData *bbd, ParticleData *pa, float grou
if (bpa->data.mode == eBoidMode_Climbing) {
SurfaceModifierData *surmd = NULL;
float x[3], v[3];
-
+
surmd = (SurfaceModifierData *)modifiers_findByType(bpa->ground, eModifierType_Surface );
/* take surface velocity into account */
@@ -869,10 +869,10 @@ static int boid_rule_applies(ParticleData *pa, BoidSettings *UNUSED(boids), Boid
if (rule==NULL)
return 0;
-
+
if (ELEM(bpa->data.mode, eBoidMode_OnLand, eBoidMode_Climbing) && rule->flag & BOIDRULE_ON_LAND)
return 1;
-
+
if (bpa->data.mode==eBoidMode_InAir && rule->flag & BOIDRULE_IN_AIR)
return 1;
@@ -1050,7 +1050,7 @@ void boid_brain(BoidBrainData *bbd, int p, ParticleData *pa)
if (bpa->data.mode == eBoidMode_OnLand) {
/* fuzziness makes boids capable of misjudgement */
float mul = 1.0f + state->rule_fuzziness;
-
+
if (boids->options & BOID_ALLOW_FLIGHT && bbd->wanted_co[2] > 0.0f) {
float cvel[3], dir[3];
@@ -1166,7 +1166,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
/* auto-leveling & landing if close to ground */
bpa->ground = boid_find_ground(bbd, pa, ground_co, ground_nor);
-
+
/* level = how many particle sizes above ground */
level = (pa->prev_state.co[2] - ground_co[2])/(2.0f * pa->size) - 0.5f;
@@ -1227,7 +1227,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
/* constrain speed with maximum acceleration */
old_speed = len_v3(pa->prev_state.vel);
-
+
if (bbd->wanted_speed < old_speed)
new_speed = MAX2(bbd->wanted_speed, old_speed - val.max_acc);
else
@@ -1274,7 +1274,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
mul_v3_fl(force, length);
}
-
+
add_v3_v3(acc, force);
/* store smoothed acceleration for nice banking etc. */
@@ -1289,7 +1289,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
copy_v3_v3(dvec, acc);
mul_v3_fl(dvec, dtime*dtime*0.5f);
-
+
copy_v3_v3(bvec, pa->prev_state.vel);
mul_v3_fl(bvec, dtime);
add_v3_v3(dvec, bvec);
@@ -1468,7 +1468,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
}
negate_v3(mat[2]);
cross_v3_v3v3(mat[1], mat[2], mat[0]);
-
+
/* apply rotation */
mat3_to_quat_is_ok(q, mat);
copy_qt_qt(pa->state.rot, q);