Blender
V5.0
source
blender
makesdna
DNA_boid_types.h
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2009 by Janne Karhu. All rights reserved.
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9
#pragma once
10
11
#include "
DNA_listBase.h
"
12
13
typedef
enum
eBoidRuleType
{
14
eBoidRuleType_None
= 0,
16
eBoidRuleType_Goal
= 1,
18
eBoidRuleType_Avoid
= 2,
20
eBoidRuleType_AvoidCollision
= 3,
22
eBoidRuleType_Separate
= 4,
24
eBoidRuleType_Flock
= 5,
26
eBoidRuleType_FollowLeader
= 6,
28
eBoidRuleType_AverageSpeed
= 7,
30
eBoidRuleType_Fight
= 8,
31
#if 0
33
eBoidRuleType_Protect = 9,
35
eBoidRuleType_Hide = 10,
37
eBoidRuleType_FollowPath = 11,
39
eBoidRuleType_FollowWall = 12,
40
#endif
41
}
eBoidRuleType
;
42
43
/* boidrule->flag */
44
enum
{
45
BOIDRULE_CURRENT
= 1 << 0,
46
BOIDRULE_IN_AIR
= 1 << 2,
47
BOIDRULE_ON_LAND
= 1 << 3,
48
};
49
typedef
struct
BoidRule
{
50
struct
BoidRule
*
next
, *
prev
;
51
int
type
,
flag
;
52
char
name
[32];
53
}
BoidRule
;
54
enum
{
55
BRULE_GOAL_AVOID_PREDICT
= 1 << 0,
56
BRULE_GOAL_AVOID_ARRIVE
= 1 << 1,
57
BRULE_GOAL_AVOID_SIGNAL
= 1 << 2,
58
};
59
typedef
struct
BoidRuleGoalAvoid
{
60
BoidRule
rule
;
61
struct
Object
*
ob
;
62
int
options
;
63
float
fear_factor
;
64
65
/* signals */
66
int
signal_id
,
channels
;
67
}
BoidRuleGoalAvoid
;
68
enum
{
69
BRULE_ACOLL_WITH_BOIDS
= 1 << 0,
70
BRULE_ACOLL_WITH_DEFLECTORS
= 1 << 1,
71
};
72
typedef
struct
BoidRuleAvoidCollision
{
73
BoidRule
rule
;
74
int
options
;
75
float
look_ahead
;
76
}
BoidRuleAvoidCollision
;
77
#define BRULE_LEADER_IN_LINE (1 << 0)
78
typedef
struct
BoidRuleFollowLeader
{
79
BoidRule
rule
;
80
struct
Object
*
ob
;
81
float
loc
[3],
oloc
[3];
82
float
cfra
,
distance
;
83
int
options
,
queue_size
;
84
}
BoidRuleFollowLeader
;
85
typedef
struct
BoidRuleAverageSpeed
{
86
BoidRule
rule
;
87
float
wander
,
level
,
speed
;
88
char
_pad0
[4];
89
}
BoidRuleAverageSpeed
;
90
typedef
struct
BoidRuleFight
{
91
BoidRule
rule
;
92
float
distance
,
flee_distance
;
93
}
BoidRuleFight
;
94
95
typedef
enum
eBoidMode
{
96
eBoidMode_InAir
= 0,
97
eBoidMode_OnLand
= 1,
98
eBoidMode_Climbing
= 2,
99
eBoidMode_Falling
= 3,
100
eBoidMode_Liftoff
= 4,
101
}
eBoidMode
;
102
103
typedef
struct
BoidData
{
104
float
health
,
acc
[3];
105
short
state_id
,
mode
;
106
}
BoidData
;
107
108
/* Planned for near future. */
109
// typedef enum BoidConditionMode {
110
// eBoidConditionType_Then = 0,
111
// eBoidConditionType_And = 1,
112
// eBoidConditionType_Or = 2,
113
// NUM_BOID_CONDITION_MODES
114
//} BoidConditionMode;
115
// typedef enum BoidConditionType {
116
// eBoidConditionType_None = 0,
117
// eBoidConditionType_Signal = 1,
118
// eBoidConditionType_NoSignal = 2,
119
// eBoidConditionType_HealthBelow = 3,
120
// eBoidConditionType_HealthAbove = 4,
121
// eBoidConditionType_See = 5,
122
// eBoidConditionType_NotSee = 6,
123
// eBoidConditionType_StateTime = 7,
124
// eBoidConditionType_Touching = 8,
125
// NUM_BOID_CONDITION_TYPES
126
//} BoidConditionType;
127
// typedef struct BoidCondition {
128
// struct BoidCondition *next, *prev;
129
// int state_id;
130
// short type, mode;
131
// float threshold, probability;
132
//
133
// /* signals */
134
// int signal_id, channels;
135
//} BoidCondition;
136
137
typedef
enum
eBoidRulesetType
{
138
eBoidRulesetType_Fuzzy
= 0,
139
eBoidRulesetType_Random
= 1,
140
eBoidRulesetType_Average
= 2,
141
}
eBoidRulesetType
;
142
#define BOIDSTATE_CURRENT 1
143
typedef
struct
BoidState
{
144
struct
BoidState
*
next
, *
prev
;
145
ListBase
rules
;
146
ListBase
conditions
;
147
ListBase
actions
;
148
char
name
[32];
149
int
id
,
flag
;
150
151
/* rules */
152
int
ruleset_type
;
153
float
rule_fuzziness
;
154
155
/* signal */
156
int
signal_id
,
channels
;
157
float
volume
,
falloff
;
158
}
BoidState
;
159
160
/* Planned for near future. */
161
// typedef struct BoidSignal {
162
// struct BoidSignal *next, *prev;
163
// float loc[3];
164
// float volume, falloff;
165
// int id;
166
//} BoidSignal;
167
// typedef struct BoidSignalDefine {
168
// struct BoidSignalDefine *next, *prev;
169
// int id, _pad[4];
170
// char name[32];
171
//} BoidSignalDefine;
172
173
// typedef struct BoidSimulationData {
174
// ListBase signal_defines;/* list of defined signals */
175
// ListBase signals[20]; /* gathers signals from all channels */
176
// struct KDTree_3d *signaltrees[20];
177
// char channel_names[20][32];
178
// int last_signal_id; /* used for incrementing signal ids */
179
// int flag; /* switches for drawing stuff */
180
//} BoidSimulationData;
181
182
typedef
struct
BoidSettings
{
183
int
options
,
last_state_id
;
184
185
float
landing_smoothness
,
height
;
186
float
banking
,
pitch
;
187
188
float
health
,
aggression
;
189
float
strength
,
accuracy
,
range
;
190
191
/* flying related */
192
float
air_min_speed
,
air_max_speed
;
193
float
air_max_acc
,
air_max_ave
;
194
float
air_personal_space
;
195
196
/* walk/run related */
197
float
land_jump_speed
,
land_max_speed
;
198
float
land_max_acc
,
land_max_ave
;
199
float
land_personal_space
;
200
float
land_stick_force
;
201
202
struct
ListBase
states
;
203
}
BoidSettings
;
204
206
enum
{
207
BOID_ALLOW_FLIGHT
= 1 << 0,
208
BOID_ALLOW_LAND
= 1 << 1,
209
BOID_ALLOW_CLIMB
= 1 << 2,
210
};
211
212
/* boidrule->options */
213
// #define BOID_RULE_FOLLOW_LINE (1 << 0) /* follow leader */
214
// #define BOID_RULE_PREDICT (1 << 1) /* goal/avoid */
215
// #define BOID_RULE_ARRIVAL (1 << 2) /* goal */
216
// #define BOID_RULE_LAND (1 << 3) /* goal */
217
// #define BOID_RULE_WITH_BOIDS (1 << 4) /* avoid collision */
218
// #define BOID_RULE_WITH_DEFLECTORS (1 << 5) /* avoid collision */
eBoidMode
eBoidMode
Definition
DNA_boid_types.h:95
eBoidMode_OnLand
@ eBoidMode_OnLand
Definition
DNA_boid_types.h:97
eBoidMode_Liftoff
@ eBoidMode_Liftoff
Definition
DNA_boid_types.h:100
eBoidMode_Climbing
@ eBoidMode_Climbing
Definition
DNA_boid_types.h:98
eBoidMode_Falling
@ eBoidMode_Falling
Definition
DNA_boid_types.h:99
eBoidMode_InAir
@ eBoidMode_InAir
Definition
DNA_boid_types.h:96
BRULE_GOAL_AVOID_PREDICT
@ BRULE_GOAL_AVOID_PREDICT
Definition
DNA_boid_types.h:55
BRULE_GOAL_AVOID_SIGNAL
@ BRULE_GOAL_AVOID_SIGNAL
Definition
DNA_boid_types.h:57
BRULE_GOAL_AVOID_ARRIVE
@ BRULE_GOAL_AVOID_ARRIVE
Definition
DNA_boid_types.h:56
BOID_ALLOW_FLIGHT
@ BOID_ALLOW_FLIGHT
Definition
DNA_boid_types.h:207
BOID_ALLOW_LAND
@ BOID_ALLOW_LAND
Definition
DNA_boid_types.h:208
BOID_ALLOW_CLIMB
@ BOID_ALLOW_CLIMB
Definition
DNA_boid_types.h:209
eBoidRulesetType
eBoidRulesetType
Definition
DNA_boid_types.h:137
eBoidRulesetType_Average
@ eBoidRulesetType_Average
Definition
DNA_boid_types.h:140
eBoidRulesetType_Fuzzy
@ eBoidRulesetType_Fuzzy
Definition
DNA_boid_types.h:138
eBoidRulesetType_Random
@ eBoidRulesetType_Random
Definition
DNA_boid_types.h:139
BOIDRULE_CURRENT
@ BOIDRULE_CURRENT
Definition
DNA_boid_types.h:45
BOIDRULE_IN_AIR
@ BOIDRULE_IN_AIR
Definition
DNA_boid_types.h:46
BOIDRULE_ON_LAND
@ BOIDRULE_ON_LAND
Definition
DNA_boid_types.h:47
eBoidRuleType
eBoidRuleType
Definition
DNA_boid_types.h:13
eBoidRuleType_Flock
@ eBoidRuleType_Flock
Definition
DNA_boid_types.h:24
eBoidRuleType_Separate
@ eBoidRuleType_Separate
Definition
DNA_boid_types.h:22
eBoidRuleType_Goal
@ eBoidRuleType_Goal
Definition
DNA_boid_types.h:16
eBoidRuleType_None
@ eBoidRuleType_None
Definition
DNA_boid_types.h:14
eBoidRuleType_Fight
@ eBoidRuleType_Fight
Definition
DNA_boid_types.h:30
eBoidRuleType_Avoid
@ eBoidRuleType_Avoid
Definition
DNA_boid_types.h:18
eBoidRuleType_FollowLeader
@ eBoidRuleType_FollowLeader
Definition
DNA_boid_types.h:26
eBoidRuleType_AvoidCollision
@ eBoidRuleType_AvoidCollision
Definition
DNA_boid_types.h:20
eBoidRuleType_AverageSpeed
@ eBoidRuleType_AverageSpeed
Definition
DNA_boid_types.h:28
BRULE_ACOLL_WITH_DEFLECTORS
@ BRULE_ACOLL_WITH_DEFLECTORS
Definition
DNA_boid_types.h:70
BRULE_ACOLL_WITH_BOIDS
@ BRULE_ACOLL_WITH_BOIDS
Definition
DNA_boid_types.h:69
DNA_listBase.h
These structs are the foundation for all linked lists in the library system.
BoidData
Definition
DNA_boid_types.h:103
BoidData::state_id
short state_id
Definition
DNA_boid_types.h:105
BoidData::mode
short mode
Definition
DNA_boid_types.h:105
BoidData::health
float health
Definition
DNA_boid_types.h:104
BoidData::acc
float acc[3]
Definition
DNA_boid_types.h:104
BoidRuleAverageSpeed
Definition
DNA_boid_types.h:85
BoidRuleAverageSpeed::rule
BoidRule rule
Definition
DNA_boid_types.h:86
BoidRuleAverageSpeed::speed
float speed
Definition
DNA_boid_types.h:87
BoidRuleAverageSpeed::wander
float wander
Definition
DNA_boid_types.h:87
BoidRuleAverageSpeed::level
float level
Definition
DNA_boid_types.h:87
BoidRuleAverageSpeed::_pad0
char _pad0[4]
Definition
DNA_boid_types.h:88
BoidRuleAvoidCollision
Definition
DNA_boid_types.h:72
BoidRuleAvoidCollision::look_ahead
float look_ahead
Definition
DNA_boid_types.h:75
BoidRuleAvoidCollision::rule
BoidRule rule
Definition
DNA_boid_types.h:73
BoidRuleAvoidCollision::options
int options
Definition
DNA_boid_types.h:74
BoidRuleFight
Definition
DNA_boid_types.h:90
BoidRuleFight::distance
float distance
Definition
DNA_boid_types.h:92
BoidRuleFight::rule
BoidRule rule
Definition
DNA_boid_types.h:91
BoidRuleFight::flee_distance
float flee_distance
Definition
DNA_boid_types.h:92
BoidRuleFollowLeader
Definition
DNA_boid_types.h:78
BoidRuleFollowLeader::options
int options
Definition
DNA_boid_types.h:83
BoidRuleFollowLeader::ob
struct Object * ob
Definition
DNA_boid_types.h:80
BoidRuleFollowLeader::distance
float distance
Definition
DNA_boid_types.h:82
BoidRuleFollowLeader::loc
float loc[3]
Definition
DNA_boid_types.h:81
BoidRuleFollowLeader::cfra
float cfra
Definition
DNA_boid_types.h:82
BoidRuleFollowLeader::rule
BoidRule rule
Definition
DNA_boid_types.h:79
BoidRuleFollowLeader::oloc
float oloc[3]
Definition
DNA_boid_types.h:81
BoidRuleFollowLeader::queue_size
int queue_size
Definition
DNA_boid_types.h:83
BoidRuleGoalAvoid
Definition
DNA_boid_types.h:59
BoidRuleGoalAvoid::channels
int channels
Definition
DNA_boid_types.h:66
BoidRuleGoalAvoid::fear_factor
float fear_factor
Definition
DNA_boid_types.h:63
BoidRuleGoalAvoid::rule
BoidRule rule
Definition
DNA_boid_types.h:60
BoidRuleGoalAvoid::signal_id
int signal_id
Definition
DNA_boid_types.h:66
BoidRuleGoalAvoid::options
int options
Definition
DNA_boid_types.h:62
BoidRuleGoalAvoid::ob
struct Object * ob
Definition
DNA_boid_types.h:61
BoidRule
Definition
DNA_boid_types.h:49
BoidRule::flag
int flag
Definition
DNA_boid_types.h:51
BoidRule::type
int type
Definition
DNA_boid_types.h:51
BoidRule::next
struct BoidRule * next
Definition
DNA_boid_types.h:50
BoidRule::prev
struct BoidRule * prev
Definition
DNA_boid_types.h:50
BoidRule::name
char name[32]
Definition
DNA_boid_types.h:52
BoidSettings
Definition
DNA_boid_types.h:182
BoidSettings::land_max_speed
float land_max_speed
Definition
DNA_boid_types.h:197
BoidSettings::options
int options
Definition
DNA_boid_types.h:183
BoidSettings::air_max_speed
float air_max_speed
Definition
DNA_boid_types.h:192
BoidSettings::strength
float strength
Definition
DNA_boid_types.h:189
BoidSettings::states
struct ListBase states
Definition
DNA_boid_types.h:202
BoidSettings::landing_smoothness
float landing_smoothness
Definition
DNA_boid_types.h:185
BoidSettings::land_jump_speed
float land_jump_speed
Definition
DNA_boid_types.h:197
BoidSettings::aggression
float aggression
Definition
DNA_boid_types.h:188
BoidSettings::air_max_ave
float air_max_ave
Definition
DNA_boid_types.h:193
BoidSettings::banking
float banking
Definition
DNA_boid_types.h:186
BoidSettings::pitch
float pitch
Definition
DNA_boid_types.h:186
BoidSettings::land_stick_force
float land_stick_force
Definition
DNA_boid_types.h:200
BoidSettings::air_personal_space
float air_personal_space
Definition
DNA_boid_types.h:194
BoidSettings::land_max_acc
float land_max_acc
Definition
DNA_boid_types.h:198
BoidSettings::land_personal_space
float land_personal_space
Definition
DNA_boid_types.h:199
BoidSettings::range
float range
Definition
DNA_boid_types.h:189
BoidSettings::accuracy
float accuracy
Definition
DNA_boid_types.h:189
BoidSettings::air_max_acc
float air_max_acc
Definition
DNA_boid_types.h:193
BoidSettings::air_min_speed
float air_min_speed
Definition
DNA_boid_types.h:192
BoidSettings::land_max_ave
float land_max_ave
Definition
DNA_boid_types.h:198
BoidSettings::last_state_id
int last_state_id
Definition
DNA_boid_types.h:183
BoidSettings::health
float health
Definition
DNA_boid_types.h:188
BoidSettings::height
float height
Definition
DNA_boid_types.h:185
BoidState
Definition
DNA_boid_types.h:143
BoidState::conditions
ListBase conditions
Definition
DNA_boid_types.h:146
BoidState::name
char name[32]
Definition
DNA_boid_types.h:148
BoidState::volume
float volume
Definition
DNA_boid_types.h:157
BoidState::falloff
float falloff
Definition
DNA_boid_types.h:157
BoidState::flag
int flag
Definition
DNA_boid_types.h:149
BoidState::ruleset_type
int ruleset_type
Definition
DNA_boid_types.h:152
BoidState::signal_id
int signal_id
Definition
DNA_boid_types.h:156
BoidState::prev
struct BoidState * prev
Definition
DNA_boid_types.h:144
BoidState::actions
ListBase actions
Definition
DNA_boid_types.h:147
BoidState::rule_fuzziness
float rule_fuzziness
Definition
DNA_boid_types.h:153
BoidState::rules
ListBase rules
Definition
DNA_boid_types.h:145
BoidState::id
int id
Definition
DNA_boid_types.h:149
BoidState::channels
int channels
Definition
DNA_boid_types.h:156
BoidState::next
struct BoidState * next
Definition
DNA_boid_types.h:144
ListBase
Definition
DNA_listBase.h:32
Object
Definition
DNA_object_types.h:191
Generated on
for Blender by
doxygen
1.16.1