|
Blender V4.5
|
#include <cmath>#include <cstring>#include "MEM_guardedalloc.h"#include "DNA_object_force_types.h"#include "DNA_scene_types.h"#include "BLI_kdtree.h"#include "BLI_listbase.h"#include "BLI_math_base_safe.h"#include "BLI_math_rotation.h"#include "BLI_math_vector.h"#include "BLI_rand.h"#include "BLI_string.h"#include "BLI_string_utf8.h"#include "BLI_utildefines.h"#include "BKE_boids.h"#include "BKE_collision.h"#include "BKE_effect.h"#include "BKE_particle.h"#include "BLI_kdopbvh.hh"#include "BLT_translation.hh"#include "BKE_modifier.hh"#include "RNA_enum_types.hh"Go to the source code of this file.
Classes | |
| struct | BoidValues |
Typedefs | |
| using | boid_rule_cb |
Variables | |
| static boid_rule_cb | boid_rules [] |
| using boid_rule_cb |
|
static |
Definition at line 1004 of file boids.cc.
References apply_boid_rule(), boid_rule_applies(), boid_rules, ParticleSettings::boids, compare_len_v3v3(), len_v3(), BoidBrainData::part, ParticleData::prev_state, BoidRule::type, ParticleKey::vel, and BoidBrainData::wanted_co.
Referenced by apply_boid_rule(), and boid_brain().
| void boid_body | ( | BoidBrainData * | bbd, |
| struct ParticleData * | pa ) |
Tries to realize the wanted velocity taking all constraints into account.
Definition at line 1211 of file boids.cc.
References BoidData::acc, add_v3_v3(), add_v3_v3v3(), angle(), ParticleKey::ave, axis_angle_to_quat(), BoidSettings::banking, BKE_effectors_apply(), BLI_rng_get_float(), ParticleData::boid, BOID_ALLOW_FLIGHT, BOID_ALLOW_LAND, boid_body(), boid_climb(), boid_find_ground(), boid_goal_signed_dist(), ParticleSettings::boids, ParticleKey::co, ParticleSimulationData::colliders, copy_particle_key(), copy_qt_qt(), copy_v2_v2(), copy_v3_v3(), cross_v3_v3v3(), ParticleSettings::dampfac, BoidParticle::data, BoidBrainData::dfra, dot_v2v2(), dot_v3v3(), eBoidMode_Climbing, eBoidMode_Falling, eBoidMode_InAir, eBoidMode_Liftoff, eBoidMode_OnLand, ParticleSettings::effector_weights, ParticleSystem::effectors, ELEM, ParticleSettings::flag, BoidBrainData::goal_co, BoidBrainData::goal_nor, BoidBrainData::goal_ob, BoidParticle::gravity, PhysicsSettings::gravity, BoidParticle::ground, BoidSettings::height, BoidSettings::land_stick_force, BoidSettings::landing_smoothness, len_v3(), length(), madd_v3_v3fl(), madd_v3_v3v3fl(), ParticleSettings::mass, mat3_to_quat_legacy(), BoidValues::max_acc, BoidValues::max_ave, BoidValues::max_speed, min_ff(), BoidValues::min_speed, BoidData::mode, mul_qt_v3(), mul_v2_fl(), mul_v3_fl(), negate_v3(), negate_v3_v3(), normalize_v2(), normalize_v3(), normalize_v3_v3(), BoidSettings::options, BoidBrainData::part, PART_SIZEMASS, pd_point_from_particle(), Scene::physics_settings, BoidSettings::pitch, ParticleData::prev_state, project_v3_v3v3(), ParticleSimulationData::psys, psys_uses_gravity(), BoidBrainData::rng, ParticleKey::rot, safe_acosf(), safe_sqrtf(), ParticleSimulationData::scene, set_boid_values(), BoidBrainData::sim, ParticleData::size, ParticleData::state, sub_v3_v3v3(), BoidBrainData::timestep, v, ParticleKey::vel, BoidBrainData::wanted_co, and BoidBrainData::wanted_speed.
Referenced by boid_body(), and dynamics_step().
| void boid_brain | ( | BoidBrainData * | bbd, |
| int | p, | ||
| struct ParticleData * | pa ) |
Determines the velocity the boid wants to have.
Definition at line 1054 of file boids.cc.
References add_v2_v2v2(), add_v3_v3(), ParticleData::alive, apply_boid_rule(), ParticleKey::ave, BLI_findlink(), BLI_listbase_count(), ParticleData::boid, BOID_ALLOW_FLIGHT, boid_brain(), ParticleSettings::boids, BoidBrainData::cfra, copy_v3_v3(), BoidParticle::data, ParticleData::dietime, dot_v2v2(), eBoidMode_Falling, eBoidMode_Liftoff, eBoidMode_OnLand, eBoidRulesetType_Average, eBoidRulesetType_Fuzzy, eBoidRulesetType_Random, get_boid_state(), PhysicsSettings::gravity, BoidData::health, jump(), BoidValues::jump_speed, len(), len_v2(), LISTBASE_FOREACH, BoidValues::max_speed, BoidData::mode, mul(), mul_v3_fl(), normalize_v2(), normalize_v3(), BoidSettings::options, PARS_DYING, BoidBrainData::part, Scene::physics_settings, ParticleData::prev_state, ParticleSimulationData::psys, psys_frand(), safe_sqrtf(), ParticleSimulationData::scene, ParticleSystem::seed, set_boid_values(), BoidBrainData::sim, state, ParticleKey::vel, BoidBrainData::wanted_co, BoidBrainData::wanted_speed, and zero_v3().
Referenced by boid_brain(), and dynamics_step().
|
static |
Definition at line 974 of file boids.cc.
References add_v3_v3v3(), ParticleData::boid, boid_climb(), ParticleKey::co, copy_v3_v3(), BoidParticle::gravity, BoidSettings::height, madd_v3_v3fl(), mul_v3_fl(), normalize_v3(), project_v3_v3v3(), ParticleData::size, ParticleData::state, sub_v3_v3v3(), and ParticleKey::vel.
Referenced by boid_body(), and boid_climb().
| BoidSettings * boid_copy_settings | ( | const BoidSettings * | boids | ) |
Definition at line 1711 of file boids.cc.
References BoidState::actions, BLI_duplicatelist(), boid_copy_settings(), BoidState::conditions, ListBase::first, MEM_dupallocN(), BoidState::next, BoidState::rules, state, and BoidSettings::states.
| void boid_default_settings | ( | BoidSettings * | boids | ) |
Definition at line 1638 of file boids.cc.
References BoidSettings::accuracy, BoidSettings::aggression, BoidSettings::air_max_acc, BoidSettings::air_max_ave, BoidSettings::air_max_speed, BoidSettings::air_personal_space, BoidSettings::banking, BOID_ALLOW_FLIGHT, boid_default_settings(), BoidSettings::health, BoidSettings::height, BoidSettings::land_max_acc, BoidSettings::land_max_ave, BoidSettings::land_max_speed, BoidSettings::land_personal_space, BoidSettings::landing_smoothness, BoidSettings::options, BoidSettings::pitch, BoidSettings::range, and BoidSettings::strength.
Referenced by boid_default_settings().
| BoidState * boid_duplicate_state | ( | BoidSettings * | boids, |
| BoidState * | state ) |
Definition at line 1683 of file boids.cc.
References BoidState::actions, BLI_duplicatelist(), boid_duplicate_state(), BoidState::conditions, BoidState::id, BoidSettings::last_state_id, MEM_dupallocN(), BoidState::rules, and state.
Referenced by boid_duplicate_state().
|
static |
Definition at line 831 of file boids.cc.
References add_v3_v3(), add_v3_v3v3(), BKE_modifiers_findby_type(), BKE_psys_collision_neartest_cb(), BLI_bvhtree_ray_cast_ex(), ParticleData::boid, boid_find_ground(), BVH_RAYCAST_DEFAULT, BVH_RAYCAST_WATERTIGHT, CollisionModifierData::bvhtree, closest_point_on_surface(), ParticleKey::co, ParticleCollision::co1, ParticleCollision::co2, ParticleSimulationData::colliders, copy_v3_v3(), ParticleCollision::current, BoidParticle::data, BVHTreeRayHit::dist, eBoidMode_Climbing, eModifierType_Surface, ParticleCollision::f, ParticleCollision::fac1, ParticleCollision::fac2, BoidParticle::ground, ParticleCollision::hit, BVHTreeRayHit::index, ParticleCollisionElement::inside, interp_v3_v3v3(), LISTBASE_FOREACH, ParticleCollision::md, BoidData::mode, ParticleCollisionElement::nor, normalize_v3(), normalize_v3_v3(), ParticleCollision::original_ray_length, ParticleCollision::pce, BoidBrainData::sim, ParticleData::state, sub_v3_v3(), sub_v3_v3v3(), v, and x.
Referenced by boid_body(), and boid_find_ground().
| void boid_free_settings | ( | BoidSettings * | boids | ) |
Definition at line 1695 of file boids.cc.
References BLI_freelistN(), boid_free_settings(), ListBase::first, MEM_freeN(), state, and BoidSettings::states.
Referenced by boid_free_settings(), and particle_settings_free_data().
| BoidState * boid_get_current_state | ( | BoidSettings * | boids | ) |
Definition at line 1734 of file boids.cc.
References boid_get_current_state(), BOIDSTATE_CURRENT, ListBase::first, state, and BoidSettings::states.
Referenced by boid_copy_settings(), boid_get_current_state(), rule_add_exec(), rule_del_exec(), rule_move_down_exec(), and rule_move_up_exec().
|
static |
Definition at line 995 of file boids.cc.
References boid_goal_signed_dist(), dot_v3v3(), and sub_v3_v3v3().
Referenced by boid_body(), and boid_goal_signed_dist().
| BoidRule * boid_new_rule | ( | int | type | ) |
Definition at line 1585 of file boids.cc.
References boid_new_rule(), BOIDRULE_IN_AIR, BOIDRULE_ON_LAND, DATA_, BoidRuleFollowLeader::distance, eBoidRuleType_AverageSpeed, eBoidRuleType_Avoid, eBoidRuleType_AvoidCollision, eBoidRuleType_Fight, eBoidRuleType_FollowLeader, eBoidRuleType_Goal, BoidRule::flag, BoidRuleAvoidCollision::look_ahead, MEM_callocN(), BoidRule::name, rna_enum_boidrule_type_items, rule_fight(), BoidRuleAverageSpeed::speed, STRNCPY_UTF8, and BoidRule::type.
Referenced by boid_new_rule(), and rule_add_exec().
| BoidState * boid_new_state | ( | BoidSettings * | boids | ) |
Definition at line 1664 of file boids.cc.
References boid_new_state(), BoidSettings::last_state_id, MEM_callocN(), SNPRINTF, state, and STRNCPY().
Referenced by boid_new_state(), state_add_exec(), and state_del_exec().
|
static |
Definition at line 938 of file boids.cc.
References ParticleData::boid, boid_rule_applies(), BOIDRULE_IN_AIR, BOIDRULE_ON_LAND, BoidParticle::data, eBoidMode_Climbing, eBoidMode_InAir, eBoidMode_OnLand, ELEM, BoidRule::flag, and BoidData::mode.
Referenced by apply_boid_rule(), and boid_rule_applies().
| void boids_precalc_rules | ( | ParticleSettings * | part, |
| float | cfra ) |
Definition at line 957 of file boids.cc.
References ParticleSettings::boids, boids_precalc_rules(), BoidRuleFollowLeader::cfra, copy_v3_v3(), eBoidRuleType_FollowLeader, LISTBASE_FOREACH, BoidRuleFollowLeader::loc, BoidRuleFollowLeader::ob, BoidRuleFollowLeader::oloc, state, BoidSettings::states, and BoidRule::type.
Referenced by boids_precalc_rules(), and dynamics_step().
|
static |
Definition at line 1027 of file boids.cc.
References ParticleData::boid, BoidParticle::data, ListBase::first, get_boid_state(), state, BoidData::state_id, and BoidSettings::states.
Referenced by boid_brain(), and get_boid_state().
|
static |
Definition at line 39 of file boids.cc.
References dot_v3v3(), len_squared_v3(), len_squared_v3v3_with_normal_bias(), and sub_v3_v3v3().
Referenced by len_squared_v3v3_with_normal_bias(), rule_avoid_collision(), and rule_flock().
|
static |
Definition at line 625 of file boids.cc.
References add_v3_v3(), ParticleKey::ave, BLI_rng_get_float(), ParticleData::boid, copy_v3_v3(), dot_v2v2(), PhysicsSettings::gravity, BoidRuleAverageSpeed::level, BoidValues::max_speed, mul_qt_v3(), mul_v3_fl(), normalize_v3(), Scene::physics_settings, ParticleData::prev_state, project_v3_v3v3(), psys_uses_gravity(), BoidBrainData::rng, ParticleKey::rot, rule_average_speed(), ParticleSimulationData::scene, BoidBrainData::sim, BoidRuleAverageSpeed::speed, sub_v3_v3(), BoidParticle::wander, BoidRuleAverageSpeed::wander, BoidBrainData::wanted_co, and BoidBrainData::wanted_speed.
Referenced by rule_average_speed().
|
static |
Definition at line 210 of file boids.cc.
References add_v3_v3v3(), ParticleKey::ave, BKE_psys_collision_neartest_cb(), BLI_assert, BLI_bvhtree_ray_cast_ex(), BLI_rng_get_float(), ParticleData::boid, BRULE_ACOLL_WITH_BOIDS, BRULE_ACOLL_WITH_DEFLECTORS, BVH_RAYCAST_DEFAULT, BVH_RAYCAST_WATERTIGHT, CollisionModifierData::bvhtree, ParticleKey::co, ParticleCollision::co1, ParticleCollision::co2, ParticleSimulationData::colliders, copy_v3_v3(), ParticleCollision::current, BVHTreeRayHit::dist, dot_v3v3(), ParticleCollision::f, BoidParticle::ground, BVHTreeRayHit::index, len(), len_squared_v3v3_with_normal_bias(), len_v3(), LISTBASE_FOREACH, BoidRuleAvoidCollision::look_ahead, madd_v3_v3fl(), ParticleCollision::md, MEM_freeN(), MEM_SAFE_FREE, BoidValues::min_speed, mul_v3_fl(), ParticleCollisionElement::nor, normalize_v3(), ParticleSimulationData::ob, BoidRuleAvoidCollision::options, ParticleCollision::original_ray_length, ParticleSystem::particles, ParticleCollision::pce, BoidValues::personal_space, ParticleData::prev_state, ParticleSimulationData::psys, psys_get_target_system(), ret, BoidBrainData::rng, rule_avoid_collision(), BoidBrainData::sim, ParticleData::size, sqrtf, sub_v3_v3v3(), ParticleSystem::targets, ParticleSystem::tree, ParticleKey::vel, BoidBrainData::wanted_co, and BoidBrainData::wanted_speed.
Referenced by rule_avoid_collision().
|
static |
Definition at line 680 of file boids.cc.
References BoidSettings::accuracy, BoidSettings::aggression, ParticleKey::ave, BLI_rng_get_float(), ParticleData::boid, ParticleSettings::boids, ParticleKey::co, copy_v3_v3(), BoidParticle::data, BoidRuleFight::distance, dot_v3v3(), BoidData::health, BoidSettings::health, LISTBASE_FOREACH, BoidValues::max_speed, MEM_SAFE_FREE, negate_v3(), normalize_v3_v3(), ParticleSimulationData::ob, BoidBrainData::part, ParticleSystem::part, ParticleSystem::particles, ParticleData::prev_state, ParticleSimulationData::psys, psys_get_target_system(), PTARGET_MODE_ENEMY, PTARGET_MODE_FRIEND, ret, BoidBrainData::rng, rule_fight(), BoidBrainData::sim, ParticleData::size, BoidSettings::strength, sub_v3_v3v3(), ParticleSystem::targets, BoidBrainData::timestep, ParticleSystem::tree, BoidBrainData::wanted_co, and BoidBrainData::wanted_speed.
Referenced by boid_new_rule(), and rule_fight().
|
static |
Definition at line 446 of file boids.cc.
References add_v3_v3(), ARRAY_SIZE, ParticleKey::ave, ParticleKey::co, len_squared_v3v3_with_normal_bias(), len_v3(), mul_v3_fl(), ParticleSystem::particles, ParticleData::prev_state, ParticleSimulationData::psys, ret, rule_flock(), BoidBrainData::sim, ParticleData::state, sub_v3_v3(), ParticleSystem::tree, ParticleKey::vel, BoidBrainData::wanted_co, and BoidBrainData::wanted_speed.
Referenced by rule_flock().
|
static |
Definition at line 483 of file boids.cc.
References ARRAY_HAS_ITEM, BLI_assert, BRULE_LEADER_IN_LINE, ParticleKey::co, copy_v3_v3(), BoidRuleFollowLeader::distance, dot_v3v3(), i, len(), len_v3(), BoidRuleFollowLeader::loc, madd_v3_v3fl(), BoidValues::max_speed, mul(), mul_v3_fl(), BoidRuleFollowLeader::ob, BoidRuleFollowLeader::oloc, BoidRuleFollowLeader::options, ParticleSystem::particles, ParticleData::prev_state, ParticleSimulationData::psys, BoidRuleFollowLeader::queue_size, ret, rule_follow_leader(), BoidBrainData::sim, ParticleData::size, sub_v3_v3v3(), BoidBrainData::timestep, ParticleSystem::totpart, ParticleKey::vel, BoidBrainData::wanted_co, and BoidBrainData::wanted_speed.
Referenced by rule_follow_leader().
|
static |
Definition at line 74 of file boids.cc.
References add_v3_v3(), ParticleData::boid, BOID_ALLOW_CLIMB, ParticleSettings::boids, BRULE_GOAL_AVOID_PREDICT, ParticleKey::co, copy_v3_v3(), BoidParticle::data, EffectorCache::depsgraph, ParticleSimulationData::depsgraph, EffectorData::distance, eBoidMode_Climbing, eBoidRuleType_Avoid, eBoidRuleType_Goal, effector_falloff(), ParticleSettings::effector_weights, ParticleSystem::effectors, PartDeflect::f_strength, BoidRuleGoalAvoid::fear_factor, PartDeflect::forcefield, get_effector_data(), BoidBrainData::goal_co, BoidBrainData::goal_nor, BoidBrainData::goal_ob, BoidBrainData::goal_priority, BoidParticle::gravity, BoidParticle::ground, BoidSettings::height, EffectorData::index, BoidSettings::landing_smoothness, len(), len_v3(), LISTBASE_FOREACH, EffectorData::loc, BoidValues::max_speed, BoidData::mode, mul(), mul_v3_fl(), negate_v3_v3(), EffectorData::nor, BoidRuleGoalAvoid::ob, EffectorCache::ob, BoidRuleGoalAvoid::options, BoidSettings::options, BoidBrainData::part, EffectorCache::pd, pd_point_from_particle(), PFIELD_BOID, PFIELD_SHAPE_SURFACE, powf, ParticleData::prev_state, ParticleSimulationData::psys, ret, rule_goal_avoid(), EffectorCache::scene, ParticleSimulationData::scene, PartDeflect::shape, BoidBrainData::sim, ParticleData::size, ParticleData::state, sub_v3_v3v3(), BoidBrainData::timestep, BoidRule::type, EffectorData::vec_to_point, EffectorData::vel, ParticleKey::vel, BoidBrainData::wanted_co, and BoidBrainData::wanted_speed.
Referenced by rule_goal_avoid().
|
static |
|
static |
Definition at line 402 of file boids.cc.
References add_v3_v3(), ParticleKey::co, len(), LISTBASE_FOREACH, BoidValues::max_speed, MEM_SAFE_FREE, mul_v3_fl(), ParticleSimulationData::ob, ParticleSystem::particles, BoidValues::personal_space, ParticleData::prev_state, ParticleSimulationData::psys, psys_get_target_system(), ret, rule_separate(), BoidBrainData::sim, ParticleData::size, ParticleData::state, sub_v3_v3v3(), ParticleSystem::targets, ParticleSystem::tree, BoidBrainData::wanted_co, and BoidBrainData::wanted_speed.
Referenced by rule_separate().
|
static |
Definition at line 809 of file boids.cc.
References BoidSettings::air_max_acc, BoidSettings::air_max_ave, BoidSettings::air_max_speed, BoidSettings::air_min_speed, BoidSettings::air_personal_space, ParticleData::boid, BoidParticle::data, eBoidMode_Climbing, eBoidMode_OnLand, ELEM, BoidData::health, BoidSettings::health, BoidValues::jump_speed, BoidSettings::land_jump_speed, BoidSettings::land_max_acc, BoidSettings::land_max_ave, BoidSettings::land_max_speed, BoidSettings::land_personal_space, M_PI, BoidValues::max_acc, BoidValues::max_ave, BoidValues::max_speed, BoidValues::min_speed, BoidData::mode, BoidValues::personal_space, and set_boid_values().
Referenced by boid_body(), boid_brain(), and set_boid_values().
|
static |
Definition at line 790 of file boids.cc.
Referenced by apply_boid_rule().