Blender  V3.3
BKE_effect.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 #pragma once
4 
9 #include "BLI_utildefines.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 struct Collection;
16 struct Depsgraph;
17 struct ListBase;
18 struct Object;
19 struct ParticleData;
20 struct ParticleKey;
22 struct Scene;
23 struct ViewLayer;
24 
25 struct EffectorWeights *BKE_effector_add_weights(struct Collection *collection);
26 
27 /* Input to effector code */
28 typedef struct EffectedPoint {
29  float *loc;
30  float *vel;
31  float *ave; /* angular velocity for particles with dynamic rotation */
32  float *rot; /* rotation quaternion for particles with dynamic rotation */
33  float vel_to_frame;
34  float vel_to_sec;
35 
36  /* only for particles */
37  float size, charge;
38 
39  unsigned int flag;
40  int index;
41 
42  struct ParticleSystem *psys; /* particle system the point belongs to */
44 
45 typedef struct GuideEffectorData {
46  float vec_to_point[3];
47  float strength;
49 
50 typedef struct EffectorData {
51  /* Effector point */
52  float loc[3];
53  float nor[3];
54  float vel[3];
55 
56  float vec_to_point[3];
57  float distance, falloff;
58 
59  /* only for effector particles */
60  float size, charge;
61 
62  /* only for vortex effector with surface falloff */
63  float nor2[3], vec_to_point2[3];
64 
65  int *index; /* point index */
67 
68 /* used for calculating the effector force */
69 typedef struct EffectorCache {
70  struct EffectorCache *next, *prev;
71 
73  struct Scene *scene;
74  struct Object *ob;
77 
78  struct PartDeflect *pd;
79 
80  /* precalculated for guides */
83 
84  float frame;
85  int flag;
87 
88 typedef struct EffectorRelation {
90 
91  struct Object *ob;
93  struct PartDeflect *pd;
95 
97 struct PartDeflect *BKE_partdeflect_copy(const struct PartDeflect *pd_src);
98 void BKE_partdeflect_free(struct PartDeflect *pd);
99 
106  struct ViewLayer *view_layer,
107  struct Collection *collection);
108 void BKE_effector_relations_free(struct ListBase *lb);
109 
114  struct Object *ob_src,
115  struct ParticleSystem *psys_src,
116  struct EffectorWeights *weights,
117  bool use_rotation);
121 void BKE_effectors_apply(struct ListBase *effectors,
122  struct ListBase *colliders,
123  struct EffectorWeights *weights,
124  struct EffectedPoint *point,
125  float *force,
126  float *wind_force,
127  float *impulse);
128 void BKE_effectors_free(struct ListBase *lb);
129 
131  struct ParticleData *pa,
132  struct ParticleKey *state,
133  struct EffectedPoint *point);
134 void pd_point_from_loc(
135  struct Scene *scene, float *loc, float *vel, int index, struct EffectedPoint *point);
136 void pd_point_from_soft(
137  struct Scene *scene, float *loc, float *vel, int index, struct EffectedPoint *point);
138 
139 /* needed for boids */
140 float effector_falloff(struct EffectorCache *eff,
141  struct EffectorData *efd,
142  struct EffectedPoint *point,
143  struct EffectorWeights *weights);
145  const float co[3],
146  float surface_co[3],
147  float surface_nor[3],
148  float surface_vel[3]);
149 bool get_effector_data(struct EffectorCache *eff,
150  struct EffectorData *efd,
151  struct EffectedPoint *point,
152  int real_velocity);
153 
154 /* required for particle_system.c */
155 #if 0
156 void do_physical_effector(struct EffectorData *eff,
157  struct EffectorPoint *point,
158  float *total_force);
159 float effector_falloff(struct EffectorData *eff,
160  struct EffectorPoint *point,
161  struct EffectorWeights *weights);
162 #endif
163 
164 /* EffectedPoint->flag */
165 #define PE_WIND_AS_SPEED 1
166 #define PE_USE_NORMAL_DATA 4
167 
168 /* EffectorData->flag */
169 #define PE_VELOCITY_TO_IMPULSE 1
170 
171 /* ======== Simulation Debugging ======== */
172 
173 unsigned int BKE_sim_debug_data_hash(int i);
174 unsigned int BKE_sim_debug_data_hash_combine(unsigned int kx, unsigned int ky);
175 
176 /* _VA_SIM_DEBUG_HASH#(i, ...): combined hash value of multiple integers */
177 /* Internal helpers. */
178 #define _VA_SIM_DEBUG_HASH1(a) (BKE_sim_debug_data_hash(a))
179 #define _VA_SIM_DEBUG_HASH2(a, b) \
180  (BKE_sim_debug_data_hash_combine(BKE_sim_debug_data_hash(a), _VA_SIM_DEBUG_HASH1(b)))
181 #define _VA_SIM_DEBUG_HASH3(a, b, c) \
182  (BKE_sim_debug_data_hash_combine(BKE_sim_debug_data_hash(a), _VA_SIM_DEBUG_HASH2(b, c)))
183 #define _VA_SIM_DEBUG_HASH4(a, b, c, d) \
184  (BKE_sim_debug_data_hash_combine(BKE_sim_debug_data_hash(a), _VA_SIM_DEBUG_HASH3(b, c, d)))
185 #define _VA_SIM_DEBUG_HASH5(a, b, c, d, e) \
186  (BKE_sim_debug_data_hash_combine(BKE_sim_debug_data_hash(a), _VA_SIM_DEBUG_HASH4(b, c, d, e)))
187 #define _VA_SIM_DEBUG_HASH6(a, b, c, d, e, f) \
188  (BKE_sim_debug_data_hash_combine(BKE_sim_debug_data_hash(a), _VA_SIM_DEBUG_HASH5(b, c, d, e, f)))
189 #define _VA_SIM_DEBUG_HASH7(a, b, c, d, e, f, g) \
190  (BKE_sim_debug_data_hash_combine(BKE_sim_debug_data_hash(a), \
191  _VA_SIM_DEBUG_HASH6(b, c, d, e, f, g)))
192 #define _VA_SIM_DEBUG_HASH8(a, b, c, d, e, f, g, h) \
193  (BKE_sim_debug_data_hash_combine(BKE_sim_debug_data_hash(a), \
194  _VA_SIM_DEBUG_HASH7(b, c, d, e, f, g, h)))
195 
196 #define SIM_DEBUG_HASH(...) VA_NARGS_CALL_OVERLOAD(_VA_SIM_DEBUG_HASH, __VA_ARGS__)
197 
198 typedef struct SimDebugElement {
199  unsigned int category_hash;
200  unsigned int hash;
201 
202  int type;
203  float color[3];
204 
205  float v1[3], v2[3];
206  char str[64];
208 
209 typedef enum eSimDebugElement_Type {
216 
217 typedef struct SimDebugData {
218  struct GHash *gh;
220 
222 
223 void BKE_sim_debug_data_set_enabled(bool enable);
225 void BKE_sim_debug_data_free(void);
226 
228  const float v1[3],
229  const float v2[3],
230  const char *str,
231  float r,
232  float g,
233  float b,
234  const char *category,
235  unsigned int hash);
236 void BKE_sim_debug_data_remove_element(unsigned int hash);
237 
238 #define BKE_sim_debug_data_add_dot(p, r, g, b, category, ...) \
239  { \
240  const float v2[3] = {0.0f, 0.0f, 0.0f}; \
241  BKE_sim_debug_data_add_element( \
242  SIM_DEBUG_ELEM_DOT, p, v2, NULL, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
243  }
244 
245 #define BKE_sim_debug_data_add_circle(p, radius, r, g, b, category, ...) \
246  { \
247  const float v2[3] = {radius, 0.0f, 0.0f}; \
248  BKE_sim_debug_data_add_element( \
249  SIM_DEBUG_ELEM_CIRCLE, p, v2, NULL, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
250  }
251 
252 #define BKE_sim_debug_data_add_line(p1, p2, r, g, b, category, ...) \
253  { \
254  BKE_sim_debug_data_add_element( \
255  SIM_DEBUG_ELEM_LINE, p1, p2, NULL, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
256  }
257 
258 #define BKE_sim_debug_data_add_vector(p, d, r, g, b, category, ...) \
259  { \
260  BKE_sim_debug_data_add_element( \
261  SIM_DEBUG_ELEM_VECTOR, p, d, NULL, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
262  }
263 
264 #define BKE_sim_debug_data_add_string(p, str, r, g, b, category, ...) \
265  { \
266  BKE_sim_debug_data_add_element( \
267  SIM_DEBUG_ELEM_STRING, p, NULL, str, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
268  }
269 
270 #define BKE_sim_debug_data_remove(...) \
271  BKE_sim_debug_data_remove_element(SIM_DEBUG_HASH(__VA_ARGS__))
272 
273 void BKE_sim_debug_data_clear(void);
274 void BKE_sim_debug_data_clear_category(const char *category);
275 
276 #ifdef __cplusplus
277 }
278 #endif
struct ListBase * BKE_effector_relations_create(struct Depsgraph *depsgraph, struct ViewLayer *view_layer, struct Collection *collection)
Definition: effect.c:209
unsigned int BKE_sim_debug_data_hash_combine(unsigned int kx, unsigned int ky)
Definition: effect.c:1213
eSimDebugElement_Type
Definition: BKE_effect.h:209
@ SIM_DEBUG_ELEM_VECTOR
Definition: BKE_effect.h:213
@ SIM_DEBUG_ELEM_LINE
Definition: BKE_effect.h:212
@ SIM_DEBUG_ELEM_CIRCLE
Definition: BKE_effect.h:211
@ SIM_DEBUG_ELEM_STRING
Definition: BKE_effect.h:214
@ SIM_DEBUG_ELEM_DOT
Definition: BKE_effect.h:210
void BKE_sim_debug_data_clear_category(const char *category)
Definition: effect.c:1378
void BKE_partdeflect_free(struct PartDeflect *pd)
Definition: effect.c:122
SimDebugData * _sim_debug_data
Definition: effect.c:1206
struct GuideEffectorData GuideEffectorData
struct SimDebugElement SimDebugElement
bool BKE_sim_debug_data_get_enabled(void)
Definition: effect.c:1280
float effector_falloff(struct EffectorCache *eff, struct EffectorData *efd, struct EffectedPoint *point, struct EffectorWeights *weights)
struct PartDeflect * BKE_partdeflect_new(int type)
Definition: effect.c:71
void BKE_effectors_free(struct ListBase *lb)
Definition: effect.c:369
struct EffectorCache EffectorCache
struct EffectedPoint EffectedPoint
void BKE_sim_debug_data_remove_element(unsigned int hash)
Definition: effect.c:1358
void BKE_effectors_apply(struct ListBase *effectors, struct ListBase *colliders, struct EffectorWeights *weights, struct EffectedPoint *point, float *force, float *wind_force, float *impulse)
Definition: effect.c:1114
void BKE_sim_debug_data_set_enabled(bool enable)
Definition: effect.c:1266
void pd_point_from_soft(struct Scene *scene, float *loc, float *vel, int index, struct EffectedPoint *point)
Definition: effect.c:434
bool get_effector_data(struct EffectorCache *eff, struct EffectorData *efd, struct EffectedPoint *point, int real_velocity)
Definition: effect.c:676
void BKE_sim_debug_data_clear(void)
Definition: effect.c:1368
bool closest_point_on_surface(struct SurfaceModifierData *surmd, const float co[3], float surface_co[3], float surface_nor[3], float surface_vel[3])
Definition: effect.c:640
struct PartDeflect * BKE_partdeflect_copy(const struct PartDeflect *pd_src)
Definition: effect.c:110
void BKE_sim_debug_data_free(void)
Definition: effect.c:1285
void BKE_effector_relations_free(struct ListBase *lb)
Definition: effect.c:247
unsigned int BKE_sim_debug_data_hash(int i)
Definition: effect.c:1208
struct EffectorRelation EffectorRelation
struct EffectorData EffectorData
struct EffectorWeights * BKE_effector_add_weights(struct Collection *collection)
Definition: effect.c:58
struct SimDebugData SimDebugData
void BKE_sim_debug_data_add_element(int type, const float v1[3], const float v2[3], const char *str, float r, float g, float b, const char *category, unsigned int hash)
Definition: effect.c:1307
void pd_point_from_loc(struct Scene *scene, float *loc, float *vel, int index, struct EffectedPoint *point)
Definition: effect.c:419
void pd_point_from_particle(struct ParticleSimulationData *sim, struct ParticleData *pa, struct ParticleKey *state, struct EffectedPoint *point)
Definition: effect.c:383
struct ListBase * BKE_effectors_create(struct Depsgraph *depsgraph, struct Object *ob_src, struct ParticleSystem *psys_src, struct EffectorWeights *weights, bool use_rotation)
Definition: effect.c:314
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:35
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
ATTR_WARN_UNUSED_RESULT const BMVert * v2
Scene scene
const Depsgraph * depsgraph
static void do_physical_effector(EffectorCache *eff, EffectorData *efd, EffectedPoint *point, float *total_force)
Definition: effect.c:954
#define str(s)
const int state
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static const pxr::TfToken g("g", pxr::TfToken::Immortal)
#define hash
Definition: noise.c:153
float vel_to_sec
Definition: BKE_effect.h:34
float * vel
Definition: BKE_effect.h:30
struct ParticleSystem * psys
Definition: BKE_effect.h:42
float vel_to_frame
Definition: BKE_effect.h:33
float * loc
Definition: BKE_effect.h:29
unsigned int flag
Definition: BKE_effect.h:39
float * rot
Definition: BKE_effect.h:32
float * ave
Definition: BKE_effect.h:31
float charge
Definition: BKE_effect.h:37
struct ParticleSystem * psys
Definition: BKE_effect.h:75
struct EffectorCache * prev
Definition: BKE_effect.h:70
struct SurfaceModifierData * surmd
Definition: BKE_effect.h:76
float guide_dir[3]
Definition: BKE_effect.h:82
float guide_loc[4]
Definition: BKE_effect.h:82
float guide_radius
Definition: BKE_effect.h:82
struct Scene * scene
Definition: BKE_effect.h:73
struct GuideEffectorData * guide_data
Definition: BKE_effect.h:81
struct PartDeflect * pd
Definition: BKE_effect.h:78
struct EffectorCache * next
Definition: BKE_effect.h:70
struct Object * ob
Definition: BKE_effect.h:74
struct Depsgraph * depsgraph
Definition: BKE_effect.h:72
float loc[3]
Definition: BKE_effect.h:52
float distance
Definition: BKE_effect.h:57
float vec_to_point[3]
Definition: BKE_effect.h:56
float vec_to_point2[3]
Definition: BKE_effect.h:63
int * index
Definition: BKE_effect.h:65
float nor[3]
Definition: BKE_effect.h:53
float charge
Definition: BKE_effect.h:60
float falloff
Definition: BKE_effect.h:57
float size
Definition: BKE_effect.h:60
float vel[3]
Definition: BKE_effect.h:54
float nor2[3]
Definition: BKE_effect.h:63
struct EffectorRelation * next
Definition: BKE_effect.h:89
struct ParticleSystem * psys
Definition: BKE_effect.h:92
struct PartDeflect * pd
Definition: BKE_effect.h:93
struct Object * ob
Definition: BKE_effect.h:91
struct EffectorRelation * prev
Definition: BKE_effect.h:89
float vec_to_point[3]
Definition: BKE_effect.h:46
struct GHash * gh
Definition: BKE_effect.h:218
char str[64]
Definition: BKE_effect.h:206
float color[3]
Definition: BKE_effect.h:203
unsigned int category_hash
Definition: BKE_effect.h:199
unsigned int hash
Definition: BKE_effect.h:200