33 {
PFIELD_SHAPE_LINE,
"LINE", 0,
"Line",
"Field originates from the local Z axis of the object"},
38 "Field originates from the local XY plane of the object"},
43 "Field originates from the surface of the object"},
48 "Field originates from all of the vertices of the object"},
49 {0,
nullptr, 0,
nullptr,
nullptr},
54# include <fmt/format.h>
63 {
PFIELD_SHAPE_LINE,
"LINE", 0,
"Line",
"Field originates from the local Z axis of the object"},
68 "Field originates from the local XY plane of the object"},
70 {0,
nullptr, 0,
nullptr,
nullptr},
75 {
PFIELD_SHAPE_LINE,
"LINE", 0,
"Line",
"Field originates from the local Z axis of the object"},
80 "Field originates from the local XY plane of the object"},
81 {0,
nullptr, 0,
nullptr,
nullptr},
89 {0,
nullptr, 0,
nullptr,
nullptr},
96 {0,
nullptr, 0,
nullptr,
nullptr},
102 {0,
nullptr, 0,
nullptr,
nullptr},
105# include <fmt/format.h>
133 "Trying to get PTCacheID from an invalid ID type "
134 "(Only scenes and objects are supported).");
138 return (*ob !=
nullptr || *scene !=
nullptr);
141static std::optional<std::string> rna_PointCache_path(
const PointerRNA *
ptr)
154 char name_esc[
sizeof(md->name) * 2];
161 return fmt::format(
"modifiers[\"{}\"].particle_system.point_cache", name_esc);
170 for (; surface; surface = surface->next) {
171 if (surface->pointcache == cache) {
172 char name_surface_esc[
sizeof(surface->name) * 2];
173 BLI_str_escape(name_surface_esc, surface->name,
sizeof(name_surface_esc));
175 "modifiers[\"{}\"].canvas_settings.canvas_surfaces[\"{}\"].point_cache",
186 return fmt::format(
"modifiers[\"{}\"].point_cache", name_esc);
193 return fmt::format(
"modifiers[\"{}\"].point_cache", name_esc);
198 return fmt::format(
"modifiers[\"{}\"].point_cache", name_esc);
208 Scene *scene =
nullptr;
210 if (!rna_Cache_get_valid_owner_ID(
ptr, &ob, &scene)) {
234 Scene *scene =
nullptr;
236 if (!rna_Cache_get_valid_owner_ID(
ptr, &ob, &scene)) {
253bool rna_Cache_use_disk_cache_override_apply(
Main * ,
277 Scene *scene =
nullptr;
279 if (!rna_Cache_get_valid_owner_ID(
ptr, &ob, &scene)) {
284 bool use_new_name =
true;
299 PTCacheID *pid =
nullptr, *pid2 =
nullptr;
305 if (pid->
cache == cache) {
311 use_new_name =
false;
340 while (cache->
prev) {
349static void rna_Cache_active_point_cache_index_range(
356 Scene *scene =
nullptr;
358 if (!rna_Cache_get_valid_owner_ID(
ptr, &ob, &scene)) {
370static int rna_Cache_active_point_cache_index_get(
PointerRNA *
ptr)
375 Scene *scene =
nullptr;
377 if (!rna_Cache_get_valid_owner_ID(
ptr, &ob, &scene)) {
391static void rna_Cache_active_point_cache_index_set(
PointerRNA *
ptr,
int value)
394 Scene *scene =
nullptr;
396 if (!rna_Cache_get_valid_owner_ID(
ptr, &ob, &scene)) {
408static void rna_PointCache_frame_step_range(
415 Scene *scene =
nullptr;
417 if (!rna_Cache_get_valid_owner_ID(
ptr, &ob, &scene)) {
432 Scene *scene =
nullptr;
434 if (!rna_Cache_get_valid_owner_ID(
ptr, &ob, &scene)) {
446 return int(strlen(cache->
info));
449static std::optional<std::string> rna_CollisionSettings_path(
const PointerRNA * )
457 char name_esc[
sizeof(md->
name) * 2];
460 return fmt::format(
"modifiers[\"{}\"].settings", name_esc);
471static bool rna_SoftBodySettings_use_edges_get(
PointerRNA *
ptr)
477static void rna_SoftBodySettings_use_edges_set(
PointerRNA *
ptr,
bool value)
484 data->softflag &= ~OB_SB_EDGES;
488static bool rna_SoftBodySettings_use_goal_get(
PointerRNA *
ptr)
491 return (((data->softflag) &
OB_SB_GOAL) != 0);
494static void rna_SoftBodySettings_use_goal_set(
PointerRNA *
ptr,
bool value)
501 data->softflag &= ~OB_SB_GOAL;
505static bool rna_SoftBodySettings_stiff_quads_get(
PointerRNA *
ptr)
511static void rna_SoftBodySettings_stiff_quads_set(
PointerRNA *
ptr,
bool value)
518 data->softflag &= ~OB_SB_QUADS;
522static bool rna_SoftBodySettings_self_collision_get(
PointerRNA *
ptr)
525 return (((data->softflag) &
OB_SB_SELF) != 0);
528static void rna_SoftBodySettings_self_collision_set(
PointerRNA *
ptr,
bool value)
535 data->softflag &= ~OB_SB_SELF;
550static void rna_SoftBodySettings_new_aero_set(
PointerRNA *
ptr,
int value)
557 data->softflag &= ~OB_SB_AERO_ANGLE;
561static bool rna_SoftBodySettings_face_collision_get(
PointerRNA *
ptr)
567static void rna_SoftBodySettings_face_collision_set(
PointerRNA *
ptr,
bool value)
574 data->softflag &= ~OB_SB_FACECOLL;
578static bool rna_SoftBodySettings_edge_collision_get(
PointerRNA *
ptr)
584static void rna_SoftBodySettings_edge_collision_set(
PointerRNA *
ptr,
bool value)
591 data->softflag &= ~OB_SB_EDGECOLL;
595static void rna_SoftBodySettings_goal_vgroup_get(
PointerRNA *
ptr,
char *value)
601static int rna_SoftBodySettings_goal_vgroup_length(
PointerRNA *
ptr)
607static void rna_SoftBodySettings_goal_vgroup_set(
PointerRNA *
ptr,
const char *value)
613static void rna_SoftBodySettings_mass_vgroup_set(
PointerRNA *
ptr,
const char *value)
619static void rna_SoftBodySettings_spring_vgroup_set(
PointerRNA *
ptr,
const char *value)
625static std::optional<std::string> rna_SoftBodySettings_path(
const PointerRNA *
ptr)
629 char name_esc[
sizeof(md->
name) * 2];
632 return fmt::format(
"modifiers[\"{}\"].settings", name_esc);
639 return (
GS(id->name) ==
ID_PA);
644 if (particle_id_check(
ptr)) {
649 part->pd->tex =
nullptr;
652 if (part->pd2 && part->pd2->forcefield !=
PFIELD_TEXTURE && part->pd2->tex) {
654 part->pd2->tex =
nullptr;
667 ob->
pd->
tex =
nullptr;
685 if (!particle_id_check(
ptr)) {
695static void rna_FieldSettings_type_set(
PointerRNA *
ptr,
int value)
699 part_deflect->forcefield = value;
701 if (!particle_id_check(
ptr)) {
717 if (particle_id_check(
ptr)) {
725 rna_FieldSettings_shape_update(bmain, scene,
ptr);
738static std::optional<std::string> rna_FieldSettings_path(
const PointerRNA *
ptr)
744 if (particle_id_check(
ptr)) {
748 if (part->pd == pd) {
749 return "force_field_1";
751 else if (part->pd2 == pd) {
752 return "force_field_2";
792static std::optional<std::string> rna_EffectorWeight_path(
const PointerRNA *
ptr)
797 if (particle_id_check(
ptr)) {
801 if (part->effector_weights == ew) {
802 return "effector_weights";
813 return "rigidbody_world.effector_weights";
825 char name_esc[
sizeof(md->
name) * 2];
827 return fmt::format(
"modifiers[\"{}\"].settings.effector_weights", name_esc);
836 char name_esc[
sizeof(md->
name) * 2];
838 return fmt::format(
"modifiers[\"{}\"].settings.effector_weights", name_esc);
848 char name_esc[
sizeof(md->
name) * 2];
850 return fmt::format(
"modifiers[\"{}\"].domain_settings.effector_weights", name_esc);
863 for (; surface; surface = surface->next) {
864 if (surface->effector_weights == ew) {
865 char name_esc[
sizeof(md->
name) * 2];
866 char name_esc_surface[
sizeof(surface->name) * 2];
869 BLI_str_escape(name_esc_surface, surface->name,
sizeof(name_esc_surface));
871 "modifiers[\"{}\"].canvas_settings.canvas_surfaces[\"{}\"]"
916 rna_softbody_update(bmain, scene,
ptr);
926 if (particle_id_check(
ptr)) {
927 return empty_shape_items;
934 return curve_vortex_shape_items;
937 return curve_shape_items;
941 return vortex_shape_items;
948 return empty_vortex_shape_items;
951 return empty_shape_items;
965 {0,
nullptr, 0,
nullptr,
nullptr},
1014 prop,
"Disk Cache",
"Save cache files to disk (.blend file must be saved first)");
1017 prop,
nullptr,
nullptr,
"rna_Cache_use_disk_cache_override_apply");
1068 "Use this file's path for the disk cache when library linked into another file "
1069 "(for local bakes per scene file, disable this option)");
1090 "rna_Cache_active_point_cache_index_get",
1091 "rna_Cache_active_point_cache_index_set",
1092 "rna_Cache_active_point_cache_index_range");
1124 "rna_Cache_list_begin",
1125 "rna_iterator_listbase_next",
1126 "rna_iterator_listbase_end",
1127 "rna_iterator_listbase_get",
1147 srna,
"Collision Settings",
"Collision settings for object in physics simulation");
1154 prop,
"Enabled",
"Enable this object as a collider for physics systems");
1175 prop,
"Friction Factor",
"Amount of friction during particle collision");
1188 prop,
"Permeability",
"Chance that the particle will pass through the mesh");
1208 prop,
"Inner Thickness",
"Inner face thickness (only used by softbodies)");
1229 "How much of effector force gets lost during collision with this object (in percent)");
1243 "Cloth collision acts with respect to the collider normals (improves penetration recovery)");
1250 "Cloth collision impulses act in the direction of the collider normals "
1251 "(more reliable in some cases)");
1399 {0,
"NONE", ICON_BLANK1,
"None",
""},
1404 "Create a force that acts as a boid's predators or target"},
1409 "Spherical forcefield based on the charge of particles, "
1410 "only influences other charge force fields"},
1415 "Create a force along a curve object"},
1416 {
PFIELD_DRAG,
"DRAG", ICON_FORCE_DRAG,
"Drag",
"Create a force that dampens motion"},
1419 ICON_FORCE_FLUIDFLOW,
1421 "Create a force based on fluid simulation velocities"},
1426 "Radial field toward the center of object"},
1429 ICON_FORCE_HARMONIC,
1431 "The source of this force field is the zero point of a harmonic oscillator"},
1434 ICON_FORCE_LENNARDJONES,
1436 "Forcefield based on the Lennard-Jones potential"},
1439 ICON_FORCE_MAGNETIC,
1441 "Forcefield depends on the speed of the particles"},
1442 {
PFIELD_TEXTURE,
"TEXTURE", ICON_FORCE_TEXTURE,
"Texture",
"Force field based on a texture"},
1445 ICON_FORCE_TURBULENCE,
1447 "Create turbulence with a noise field"},
1452 "Spiraling force that twists the force object's local Z axis"},
1457 "Constant force along the force object's local Z axis"},
1458 {0,
nullptr, 0,
nullptr,
nullptr},
1465 {0,
nullptr, 0,
nullptr,
nullptr},
1472 {0,
nullptr, 0,
nullptr,
nullptr},
1479 {0,
nullptr, 0,
nullptr,
nullptr},
1483 {0,
"NONE", 0,
"None",
""},
1484 {4,
"BRAID", 0,
"Braid",
""},
1485 {1,
"CURL", 0,
"Curl",
""},
1486 {2,
"RADIAL", 0,
"Radial",
""},
1487 {6,
"ROLL", 0,
"Roll",
""},
1488 {5,
"ROTATION", 0,
"Rotation",
""},
1489 {3,
"WAVE", 0,
"Wave",
""},
1490 {0,
nullptr, 0,
nullptr,
nullptr},
1497 srna,
"Field Settings",
"Field settings for an object in physics simulation");
1515 prop,
"Shape",
"Which direction is used to calculate the effector force");
1530 "How the texture effect is calculated (RGB and Curl need a RGB texture, "
1531 "else Gradient will be used instead)");
1538 prop,
"Z Direction",
"Effect in full or only positive/negative Z direction");
1567 prop,
"Quadratic Drag",
"Drag component proportional to the square of velocity");
1582 "How much the force is reduced when acting parallel to a surface, e.g. cloth");
1610 prop,
"Falloff Power",
"How quickly strength falls off with distance from the force field");
1630 prop,
"Minimum Radial Distance",
"Minimum radial distance for the field's falloff");
1637 prop,
"Maximum Radial Distance",
"Maximum radial distance for the field to work");
1644 prop,
"Radial Falloff Power",
"Radial falloff power (real gravitational falloff = 2)");
1651 prop,
"Nabla",
"Defines size of derivative offset used for calculating gradient and curl");
1680 prop,
"Use Min",
"Use a minimum radial distance for the field's falloff");
1698 prop,
"Use Global Coordinates",
"Use effector/global coordinates for turbulence");
1709 prop,
"Root Texture Coordinates",
"Texture coordinates from root particle locations");
1730 prop,
"Multiple Springs",
"Every point is affected by multiple springs");
1762 prop,
"Minimum Distance",
"The distance from which particles are affected fully");
1774 prop,
"Additive",
"Based on distance/falloff it adds a portion of the entire path");
1780 prop,
"Weights",
"Use curve weights to influence the particle influence along the curve");
1843 {
SBC_MODE_AVG,
"AVERAGE", 0,
"Average",
"Average Spring length * Ball Size"},
1844 {
SBC_MODE_MIN,
"MINIMAL", 0,
"Minimal",
"Minimal Spring length * Ball Size"},
1845 {
SBC_MODE_MAX,
"MAXIMAL", 0,
"Maximal",
"Maximal Spring length * Ball Size"},
1847 {0,
nullptr, 0,
nullptr,
nullptr},
1851 {0,
"SIMPLE", 0,
"Simple",
"Edges receive a drag force from surrounding media"},
1856 "Edges receive a lift force when passing through surrounding media"},
1857 {0,
nullptr, 0,
nullptr,
nullptr},
1864 srna,
"Soft Body Settings",
"Soft body simulation settings for an object");
1897 prop,
"Speed",
"Tweak timing for physics to control frequency and speed");
1906 "rna_SoftBodySettings_goal_vgroup_get",
1907 "rna_SoftBodySettings_goal_vgroup_length",
1908 "rna_SoftBodySettings_goal_vgroup_set");
1915 prop,
"Goal Minimum",
"Goal minimum, vertex weights are scaled to match this range");
1922 prop,
"Goal Maximum",
"Goal maximum, vertex weights are scaled to match this range");
1936 prop,
"Goal Stiffness",
"Goal (vertex target position) spring stiffness");
1969 prop,
"Spring Length",
"Alter spring length to shrink/blow up (unit %) 0 to disable");
2015 prop,
"Ball Size",
"Absolute ball size or factor if not manually adjusted");
2038 "The Runge-Kutta ODE solver error limit, low value gives more precision, "
2039 "high values speed");
2066 "Fuzziness while on collision, high values make collision handling faster "
2078 prop,
"Print Performance to Console",
"Turn on SB diagnose console prints");
2083 prop,
"Estimate Transforms",
"Store the estimated transforms in the soft body settings");
2111 prop,
"rna_SoftBodySettings_use_goal_get",
"rna_SoftBodySettings_use_goal_set");
2114 prop,
"Use Goal",
"Define forces for vertices to stick to animated position");
2119 prop,
"rna_SoftBodySettings_use_edges_get",
"rna_SoftBodySettings_use_edges_set");
2126 prop,
"rna_SoftBodySettings_stiff_quads_get",
"rna_SoftBodySettings_stiff_quads_set");
2133 prop,
"rna_SoftBodySettings_edge_collision_get",
"rna_SoftBodySettings_edge_collision_set");
2139 prop,
"rna_SoftBodySettings_face_collision_get",
"rna_SoftBodySettings_face_collision_set");
2146 prop,
"rna_SoftBodySettings_new_aero_get",
"rna_SoftBodySettings_new_aero_set",
nullptr);
2148 prop,
"Aerodynamics Type",
"Method of calculating aerodynamic interaction");
2153 prop,
"rna_SoftBodySettings_self_collision_get",
"rna_SoftBodySettings_self_collision_set");
#define FOREACH_SCENE_OBJECT_END
#define FOREACH_SCENE_OBJECT_BEGIN(scene, _instance)
ModifierData * BKE_modifiers_findby_type(const Object *ob, ModifierType type)
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
@ eModifierTypeFlag_UsesPointCache
void BKE_ptcache_ids_from_object(struct ListBase *lb, struct Object *ob, struct Scene *scene, int duplis)
void BKE_ptcache_update_info(PTCacheID *pid)
void BKE_ptcache_toggle_disk_cache(struct PTCacheID *pid)
void BKE_ptcache_load_external(struct PTCacheID *pid)
PTCacheID BKE_ptcache_id_find(struct Object *ob, struct Scene *scene, struct PointCache *cache)
#define PTCACHE_TYPE_SMOKE_DOMAIN
int BKE_ptcache_object_reset(struct Scene *scene, struct Object *ob, int mode)
#define PTCACHE_RESET_DEPSGRAPH
void BKE_ptcache_disk_cache_rename(struct PTCacheID *pid, const char *name_src, const char *name_dst)
#define BLI_assert_msg(a, msg)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
bool BLI_path_make_safe_filename(char *filename) ATTR_NONNULL(1)
#define STRNCPY(dst, src)
size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define UNUSED_VARS_NDEBUG(...)
#define BLT_I18NCONTEXT_ID_PARTICLESETTINGS
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ eModifierType_ParticleSystem
@ eModifierType_Collision
@ eModifierType_DynamicPaint
@ PFIELD_MULTIPLE_SPRINGS
@ PFIELD_CLOTH_USE_NORMAL
@ PFIELD_GUIDE_PATH_WEIGHT
@ PFIELD_CLOTH_USE_CULLING
Object is a sort of wrapper for general info.
@ PTCACHE_FLAG_INFO_DIRTY
Types and defines for representing Rigid Body entities.
Read Guarded memory(de)allocation.
#define RNA_TRANSLATION_PREC_DEFAULT
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
@ PROPOVERRIDE_NO_COMPARISON
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
ModifierData * modifier_add(ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
void check_force_modifiers(Main *bmain, Scene *scene, Object *object)
PropertyType RNA_property_type(PropertyRNA *prop)
void rna_iterator_listbase_begin(CollectionPropertyIterator *iter, ListBase *lb, IteratorSkipFunc skip)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_define_lib_overridable(const bool make_overridable)
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_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_property_multi_array(PropertyRNA *prop, int dimension, const int length[])
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_string_maxlength(PropertyRNA *prop, int maxlength)
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_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
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)
const int rna_matrix_dimsize_3x3[]
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
void RNA_def_property_override_funcs(PropertyRNA *prop, const char *diff, const char *store, const char *apply)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
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_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
int rna_object_vgroup_name_index_length(PointerRNA *ptr, int index)
void rna_object_vgroup_name_set(PointerRNA *ptr, const char *value, char *result, int result_maxncpy)
void rna_object_vgroup_name_index_set(PointerRNA *ptr, const char *value, short *index)
void rna_object_vgroup_name_index_get(PointerRNA *ptr, char *value, int index)
const EnumPropertyItem rna_enum_axis_xyz_items[]
static void rna_def_pointcache_common(StructRNA *srna)
static const EnumPropertyItem effector_shape_items[]
static void rna_def_pointcache_active(BlenderRNA *brna)
static void rna_def_collision(BlenderRNA *brna)
static void rna_def_softbody(BlenderRNA *brna)
static void rna_def_ptcache_point_caches(BlenderRNA *brna, PropertyRNA *cprop)
void RNA_def_object_force(BlenderRNA *brna)
static void rna_def_effector_weight(BlenderRNA *brna)
static void rna_def_field(BlenderRNA *brna)
struct PointCache * point_cache
struct ClothSimSettings * sim_parms
struct EffectorWeights * effector_weights
struct DynamicPaintCanvasSettings * canvas
struct EffectorWeights * effector_weights
struct FluidDomainSettings * domain
struct ModifierData * next
struct PointCache ** cache_ptr
struct ListBase * ptcaches
struct PointCache * cache
struct ParticleSystem * psys
struct PointCache * pointcache
IDOverrideLibraryPropertyOperation * liboverride_operation
struct EffectorWeights * effector_weights
struct PointCache * pointcache
struct SoftBody_Shared * shared
struct EffectorWeights * effector_weights
void WM_main_add_notifier(uint type, void *reference)