32 "Go to assigned object or loudest assigned signal source"},
37 "Get away from assigned object or loudest assigned signal source"},
42 "Maneuver to avoid collisions with other boids and deflector objects in "
49 "Move to center of neighbors and match their velocity"},
54 "Follow a boid or assigned object"},
59 "Maintain speed, flight level or wander"},
62 {eBoidRuleType_Protect,
66 "Go to enemy closest to target and attack when in range"},
71 "Find a deflector move to its other side from closest enemy"},
72 {eBoidRuleType_FollowPath,
76 "Move along a assigned curve or closest curve in a group"},
77 {eBoidRuleType_FollowWall,
81 "Move next to a deflector object's in direction of its tangent"},
92 "Rules are gone through top to bottom (only the first rule which effect is above "
93 "fuzziness threshold is evaluated)"},
112 if (
ptr->
type == &RNA_ParticleSystem) {
127 if (
ptr->
type == &RNA_ParticleSystem) {
147 switch (rule->
type) {
149 return &RNA_BoidRuleGoal;
151 return &RNA_BoidRuleAvoid;
153 return &RNA_BoidRuleAvoidCollision;
155 return &RNA_BoidRuleFollowLeader;
157 return &RNA_BoidRuleAverageSpeed;
159 return &RNA_BoidRuleFight;
161 return &RNA_BoidRule;
168 char name_esc[
sizeof(rule->
name) * 2];
180 for (; rule; rule = rule->
next) {
187 static void rna_BoidState_active_boid_rule_index_range(
195 static int rna_BoidState_active_boid_rule_index_get(
PointerRNA *
ptr)
201 for (; rule; rule = rule->
next, i++) {
209 static void rna_BoidState_active_boid_rule_index_set(
struct PointerRNA *
ptr,
int value)
215 for (; rule; rule = rule->
next, i++) {
236 if (particle_id_check(
ptr)) {
258 static void rna_BoidSettings_active_boid_state_index_range(
266 static int rna_BoidSettings_active_boid_state_index_get(
PointerRNA *
ptr)
280 static void rna_BoidSettings_active_boid_state_index_set(
struct PointerRNA *
ptr,
int value)
342 prop,
"Fear Factor",
"Avoid object if danger from it is above this threshold");
351 srna =
RNA_def_struct(brna,
"BoidRuleAvoidCollision",
"BoidRule");
521 "rna_BoidState_active_boid_rule_index_get",
522 "rna_BoidState_active_boid_rule_index_set",
523 "rna_BoidState_active_boid_rule_index_range");
586 "rna_BoidSettings_active_boid_state_index_get",
587 "rna_BoidSettings_active_boid_state_index_set",
588 "rna_BoidSettings_active_boid_state_index_range");
622 prop,
"Min Air Speed",
"Minimum speed in air (relative to maximum speed)");
635 prop,
"Max Air Acceleration",
"Maximum acceleration in air (relative to maximum speed)");
642 "Max Air Angular Velocity",
643 "Maximum angular velocity in air (relative to 180 degrees)");
649 prop,
"Air Personal Space",
"Radius of boids personal space in air (% of particle size)");
667 prop,
"Max Land Acceleration",
"Maximum acceleration on land (relative to maximum speed)");
674 "Max Land Angular Velocity",
675 "Maximum angular velocity on land (relative to 180 degrees)");
681 prop,
"Land Personal Space",
"Radius of boids personal space on land (% of particle size)");
687 prop,
"Land Stick Force",
"How strong a force must be to start effecting a boid on land");
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
size_t size_t char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL()
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
#define BRULE_ACOLL_WITH_BOIDS
#define BOIDSTATE_CURRENT
#define BOID_ALLOW_FLIGHT
#define BRULE_ACOLL_WITH_DEFLECTORS
#define BRULE_LEADER_IN_LINE
@ eBoidRulesetType_Average
@ eBoidRulesetType_Random
#define BRULE_GOAL_AVOID_PREDICT
@ eBoidRuleType_FollowLeader
@ eBoidRuleType_AvoidCollision
@ eBoidRuleType_AverageSpeed
Object is a sort of wrapper for general info.
PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *data)
static const EnumPropertyItem boidruleset_type_items[]
void RNA_def_boid(BlenderRNA *brna)
static void rna_def_boidrule_average_speed(BlenderRNA *brna)
const EnumPropertyItem rna_enum_boidrule_type_items[]
static void rna_def_boidrule_avoid(BlenderRNA *brna)
static void rna_def_boidrule_avoid_collision(BlenderRNA *brna)
static void rna_def_boidrule(BlenderRNA *brna)
static void rna_def_boidrule_fight(BlenderRNA *brna)
static void rna_def_boidrule_goal(BlenderRNA *brna)
static void rna_def_boidrule_follow_leader(BlenderRNA *brna)
static void rna_def_boid_settings(BlenderRNA *brna)
static void rna_def_boidstate(BlenderRNA *brna)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_struct_name_property(struct StructRNA *srna, struct PropertyRNA *prop)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
struct BoidSettings * boids
void WM_main_add_notifier(unsigned int type, void *reference)