Blender V4.3
rna_meta.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#include <cstdlib>
10
11#include "DNA_mesh_types.h"
12#include "DNA_meta_types.h"
13
14#include "BLI_math_rotation.h"
15#include "BLI_math_vector.h"
16#include "BLI_utildefines.h"
17
18#include "RNA_access.hh"
19#include "RNA_define.hh"
20#include "RNA_enum_types.hh"
21
22#include "rna_internal.hh"
23
24#ifdef RNA_RUNTIME
25
26# include <fmt/format.h>
27
28# include "MEM_guardedalloc.h"
29
30# include "DNA_object_types.h"
31# include "DNA_scene_types.h"
32
33# include "BKE_main.hh"
34# include "BKE_mball.hh"
35# include "BKE_scene.hh"
36
37# include "DEG_depsgraph.hh"
38
39# include "WM_api.hh"
40# include "WM_types.hh"
41
42static int rna_Meta_texspace_editable(const PointerRNA *ptr, const char ** /*r_info*/)
43{
44 MetaBall *mb = (MetaBall *)ptr->data;
45 return (mb->texspace_flag & MB_TEXSPACE_FLAG_AUTO) ? 0 : int(PROP_EDITABLE);
46}
47
48static void rna_Meta_texspace_location_get(PointerRNA *ptr, float *values)
49{
50 MetaBall *mb = (MetaBall *)ptr->data;
51
52 /* tex_space_mball() needs object.. ugh */
53
54 copy_v3_v3(values, mb->texspace_location);
55}
56
57static void rna_Meta_texspace_location_set(PointerRNA *ptr, const float *values)
58{
59 MetaBall *mb = (MetaBall *)ptr->data;
60
61 copy_v3_v3(mb->texspace_location, values);
62}
63
64static void rna_Meta_texspace_size_get(PointerRNA *ptr, float *values)
65{
66 MetaBall *mb = (MetaBall *)ptr->data;
67
68 /* tex_space_mball() needs object.. ugh */
69
70 copy_v3_v3(values, mb->texspace_size);
71}
72
73static void rna_Meta_texspace_size_set(PointerRNA *ptr, const float *values)
74{
75 MetaBall *mb = (MetaBall *)ptr->data;
76
77 copy_v3_v3(mb->texspace_size, values);
78}
79
80static void rna_MetaBall_redraw_data(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
81{
82 ID *id = ptr->owner_id;
83
86}
87
88static void rna_MetaBall_update_data(Main *bmain, Scene * /*scene*/, PointerRNA *ptr)
89{
90 MetaBall *mb = (MetaBall *)ptr->owner_id;
91
92 /* NOTE: The check on the number of users allows to avoid many repetitive (slow) updates in some
93 * cases, like e.g. importers. Calling `BKE_mball_properties_copy` on an obdata with no users
94 * would be meaningless anyway, as by definition it would not be used by any object, so not part
95 * of any meta-ball group. */
96 if (mb->id.us > 0) {
98
99 DEG_id_tag_update(&mb->id, 0);
101 }
102}
103
104static void rna_MetaBall_update_rotation(Main *bmain, Scene *scene, PointerRNA *ptr)
105{
106 MetaElem *ml = static_cast<MetaElem *>(ptr->data);
107 normalize_qt(ml->quat);
108 rna_MetaBall_update_data(bmain, scene, ptr);
109}
110
111static MetaElem *rna_MetaBall_elements_new(MetaBall *mb, int type)
112{
113 MetaElem *ml = BKE_mball_element_add(mb, type);
114
115 /* cheating way for importers to avoid slow updates */
116 if (mb->id.us > 0) {
117 DEG_id_tag_update(&mb->id, 0);
119 }
120
121 return ml;
122}
123
124static void rna_MetaBall_elements_remove(MetaBall *mb, ReportList *reports, PointerRNA *ml_ptr)
125{
126 MetaElem *ml = static_cast<MetaElem *>(ml_ptr->data);
127
128 if (BLI_remlink_safe(&mb->elems, ml) == false) {
130 reports, RPT_ERROR, "Metaball '%s' does not contain spline given", mb->id.name + 2);
131 return;
132 }
133
134 MEM_freeN(ml);
136
137 /* cheating way for importers to avoid slow updates */
138 if (mb->id.us > 0) {
139 DEG_id_tag_update(&mb->id, 0);
141 }
142}
143
144static void rna_MetaBall_elements_clear(MetaBall *mb)
145{
146 BLI_freelistN(&mb->elems);
147
148 /* cheating way for importers to avoid slow updates */
149 if (mb->id.us > 0) {
150 DEG_id_tag_update(&mb->id, 0);
152 }
153}
154
155static bool rna_Meta_is_editmode_get(PointerRNA *ptr)
156{
157 MetaBall *mb = (MetaBall *)ptr->owner_id;
158 return (mb->editelems != nullptr);
159}
160
161static std::optional<std::string> rna_MetaElement_path(const PointerRNA *ptr)
162{
163 const MetaBall *mb = (MetaBall *)ptr->owner_id;
164 const MetaElem *ml = static_cast<MetaElem *>(ptr->data);
165 int index = -1;
166
167 if (mb->editelems) {
168 index = BLI_findindex(mb->editelems, ml);
169 }
170 if (index == -1) {
171 index = BLI_findindex(&mb->elems, ml);
172 }
173 if (index == -1) {
174 return std::nullopt;
175 }
176
177 return fmt::format("elements[{}]", index);
178}
179
180#else
181
183{
184 StructRNA *srna;
185 PropertyRNA *prop;
186
187 srna = RNA_def_struct(brna, "MetaElement", nullptr);
188 RNA_def_struct_sdna(srna, "MetaElem");
189 RNA_def_struct_ui_text(srna, "Metaball Element", "Blobby element in a metaball data-block");
190 RNA_def_struct_path_func(srna, "rna_MetaElement_path");
191 RNA_def_struct_ui_icon(srna, ICON_OUTLINER_DATA_META);
192
193 /* enums */
194 prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
196 RNA_def_property_ui_text(prop, "Type", "Metaball type");
197 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
198
199 /* number values */
200 prop = RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
201 RNA_def_property_float_sdna(prop, nullptr, "x");
202 RNA_def_property_array(prop, 3);
203 RNA_def_property_ui_text(prop, "Location", "");
204 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
205
206 prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_QUATERNION);
207 RNA_def_property_float_sdna(prop, nullptr, "quat");
208 RNA_def_property_ui_text(prop, "Rotation", "Normalized quaternion rotation");
209 RNA_def_property_update(prop, 0, "rna_MetaBall_update_rotation");
210
212 RNA_def_property_float_sdna(prop, nullptr, "rad");
213 RNA_def_property_ui_text(prop, "Radius", "");
214 RNA_def_property_range(prop, 0.0f, FLT_MAX);
215 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
216
217 prop = RNA_def_property(srna, "size_x", PROP_FLOAT, PROP_DISTANCE);
218 RNA_def_property_float_sdna(prop, nullptr, "expx");
220 RNA_def_property_range(prop, 0.0f, 20.0f);
222 prop, "Size X", "Size of element, use of components depends on element type");
223 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
224
225 prop = RNA_def_property(srna, "size_y", PROP_FLOAT, PROP_DISTANCE);
226 RNA_def_property_float_sdna(prop, nullptr, "expy");
228 RNA_def_property_range(prop, 0.0f, 20.0f);
230 prop, "Size Y", "Size of element, use of components depends on element type");
231 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
232
233 prop = RNA_def_property(srna, "size_z", PROP_FLOAT, PROP_DISTANCE);
234 RNA_def_property_float_sdna(prop, nullptr, "expz");
236 RNA_def_property_range(prop, 0.0f, 20.0f);
238 prop, "Size Z", "Size of element, use of components depends on element type");
239 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
240
241 prop = RNA_def_property(srna, "stiffness", PROP_FLOAT, PROP_NONE);
242 RNA_def_property_float_sdna(prop, nullptr, "s");
243 RNA_def_property_range(prop, 0.0f, 10.0f);
244 RNA_def_property_ui_text(prop, "Stiffness", "Stiffness defines how much of the element to fill");
245 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
246
247 /* flags */
248 prop = RNA_def_property(srna, "use_negative", PROP_BOOLEAN, PROP_NONE);
249 RNA_def_property_boolean_sdna(prop, nullptr, "flag", MB_NEGATIVE);
250 RNA_def_property_ui_text(prop, "Negative", "Set metaball as negative one");
251 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
252
253 prop = RNA_def_property(srna, "use_scale_stiffness", PROP_BOOLEAN, PROP_NONE);
255 RNA_def_property_ui_text(prop, "Scale Stiffness", "Scale stiffness instead of radius");
256 RNA_def_property_update(prop, 0, "rna_MetaBall_redraw_data");
257
258 prop = RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE);
259 RNA_def_property_boolean_sdna(prop, nullptr, "flag", 1); /* SELECT */
260 RNA_def_property_ui_text(prop, "Select", "Select element");
261 RNA_def_property_update(prop, 0, "rna_MetaBall_redraw_data");
262
263 prop = RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE);
264 RNA_def_property_boolean_sdna(prop, nullptr, "flag", MB_HIDE);
265 RNA_def_property_ui_text(prop, "Hide", "Hide element");
266 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
267}
268
269/* mball.elements */
271{
272 StructRNA *srna;
273 PropertyRNA *prop;
274
275 FunctionRNA *func;
276 PropertyRNA *parm;
277
278 RNA_def_property_srna(cprop, "MetaBallElements");
279 srna = RNA_def_struct(brna, "MetaBallElements", nullptr);
280 RNA_def_struct_sdna(srna, "MetaBall");
281 RNA_def_struct_ui_text(srna, "Metaball Elements", "Collection of metaball elements");
282
283 func = RNA_def_function(srna, "new", "rna_MetaBall_elements_new");
284 RNA_def_function_ui_description(func, "Add a new element to the metaball");
285 RNA_def_enum(func,
286 "type",
288 MB_BALL,
289 "",
290 "Type for the new metaball element");
291 parm = RNA_def_pointer(func, "element", "MetaElement", "", "The newly created metaball element");
292 RNA_def_function_return(func, parm);
293
294 func = RNA_def_function(srna, "remove", "rna_MetaBall_elements_remove");
295 RNA_def_function_ui_description(func, "Remove an element from the metaball");
297 parm = RNA_def_pointer(func, "element", "MetaElement", "", "The element to remove");
300
301 func = RNA_def_function(srna, "clear", "rna_MetaBall_elements_clear");
302 RNA_def_function_ui_description(func, "Remove all elements from the metaball");
303
304 prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
305 RNA_def_property_pointer_sdna(prop, nullptr, "lastelem");
306 RNA_def_property_ui_text(prop, "Active Element", "Last selected element");
307}
308
309static void rna_def_metaball(BlenderRNA *brna)
310{
311 StructRNA *srna;
312 PropertyRNA *prop;
313 static const EnumPropertyItem prop_update_items[] = {
314 {MB_UPDATE_ALWAYS, "UPDATE_ALWAYS", 0, "Always", "While editing, update metaball always"},
316 "HALFRES",
317 0,
318 "Half",
319 "While editing, update metaball in half resolution"},
320 {MB_UPDATE_FAST, "FAST", 0, "Fast", "While editing, update metaball without polygonization"},
321 {MB_UPDATE_NEVER, "NEVER", 0, "Never", "While editing, don't update metaball at all"},
322 {0, nullptr, 0, nullptr, nullptr},
323 };
324
325 srna = RNA_def_struct(brna, "MetaBall", "ID");
326 RNA_def_struct_ui_text(srna, "MetaBall", "Metaball data-block to define blobby surfaces");
327 RNA_def_struct_ui_icon(srna, ICON_META_DATA);
328
329 prop = RNA_def_property(srna, "elements", PROP_COLLECTION, PROP_NONE);
330 RNA_def_property_collection_sdna(prop, nullptr, "elems", nullptr);
331 RNA_def_property_struct_type(prop, "MetaElement");
332 RNA_def_property_ui_text(prop, "Elements", "Metaball elements");
333 rna_def_metaball_elements(brna, prop);
334
335 /* enums */
336 prop = RNA_def_property(srna, "update_method", PROP_ENUM, PROP_NONE);
337 RNA_def_property_enum_sdna(prop, nullptr, "flag");
338 RNA_def_property_enum_items(prop, prop_update_items);
339 RNA_def_property_ui_text(prop, "Update", "Metaball edit update behavior");
340 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
341
342 /* number values */
343 prop = RNA_def_property(srna, "resolution", PROP_FLOAT, PROP_DISTANCE);
344 RNA_def_property_float_sdna(prop, nullptr, "wiresize");
345 RNA_def_property_range(prop, 0.005f, 10000.0f);
346 RNA_def_property_ui_range(prop, 0.05f, 1000.0f, 2.5f, 3);
347 RNA_def_property_ui_text(prop, "Viewport Size", "Polygonization resolution in the 3D viewport");
348 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
349
350 prop = RNA_def_property(srna, "render_resolution", PROP_FLOAT, PROP_DISTANCE);
351 RNA_def_property_float_sdna(prop, nullptr, "rendersize");
352 RNA_def_property_range(prop, 0.005f, 10000.0f);
353 RNA_def_property_ui_range(prop, 0.025f, 1000.0f, 2.5f, 3);
354 RNA_def_property_ui_text(prop, "Render Size", "Polygonization resolution in rendering");
355 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
356
357 prop = RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE);
358 RNA_def_property_float_sdna(prop, nullptr, "thresh");
359 RNA_def_property_range(prop, 0.0f, 5.0f);
360 RNA_def_property_ui_text(prop, "Threshold", "Influence of metaball elements");
361 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
362
363 /* texture space */
364 prop = RNA_def_property(srna, "use_auto_texspace", PROP_BOOLEAN, PROP_NONE);
365 RNA_def_property_boolean_sdna(prop, nullptr, "texspace_flag", MB_TEXSPACE_FLAG_AUTO);
367 prop,
368 "Auto Texture Space",
369 "Adjust active object's texture space automatically when transforming object");
370
371 prop = RNA_def_property(srna, "texspace_location", PROP_FLOAT, PROP_TRANSLATION);
372 RNA_def_property_array(prop, 3);
373 RNA_def_property_ui_text(prop, "Texture Space Location", "Texture space location");
374 RNA_def_property_editable_func(prop, "rna_Meta_texspace_editable");
376 prop, "rna_Meta_texspace_location_get", "rna_Meta_texspace_location_set", nullptr);
377 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
378
379 prop = RNA_def_property(srna, "texspace_size", PROP_FLOAT, PROP_XYZ);
380 RNA_def_property_array(prop, 3);
382 RNA_def_property_ui_text(prop, "Texture Space Size", "Texture space size");
383 RNA_def_property_editable_func(prop, "rna_Meta_texspace_editable");
385 prop, "rna_Meta_texspace_size_get", "rna_Meta_texspace_size_set", nullptr);
386 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
387
388 /* not supported yet */
389# if 0
390 prop = RNA_def_property(srna, "texspace_rot", PROP_FLOAT, PROP_EULER);
391 RNA_def_property_float(prop, nullptr, "rot");
392 RNA_def_property_ui_text(prop, "Texture Space Rotation", "Texture space rotation");
393 RNA_def_property_editable_func(prop, "rna_Meta_texspace_editable");
395 RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
396# endif
397
398 /* materials */
399 prop = RNA_def_property(srna, "materials", PROP_COLLECTION, PROP_NONE);
400 RNA_def_property_collection_sdna(prop, nullptr, "mat", "totcol");
401 RNA_def_property_struct_type(prop, "Material");
402 RNA_def_property_ui_text(prop, "Materials", "");
403 RNA_def_property_srna(prop, "IDMaterials"); /* see rna_ID.cc */
405 nullptr,
406 nullptr,
407 nullptr,
408 nullptr,
409 nullptr,
410 nullptr,
411 nullptr,
412 "rna_IDMaterials_assign_int");
413
414 prop = RNA_def_property(srna, "is_editmode", PROP_BOOLEAN, PROP_NONE);
415 RNA_def_property_boolean_funcs(prop, "rna_Meta_is_editmode_get", nullptr);
417 RNA_def_property_ui_text(prop, "Is Editmode", "True when used in editmode");
418
419 /* anim */
421
422 RNA_api_meta(srna);
423}
424
426{
428 rna_def_metaball(brna);
429}
430
431#endif
void BKE_mball_properties_copy(Main *bmain, MetaBall *metaball_src)
Definition mball.cc:315
MetaElem * BKE_mball_element_add(MetaBall *mb, int type)
Definition mball.cc:183
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
bool BLI_remlink_safe(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
Definition listbase.cc:153
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
Definition listbase.cc:496
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
float normalize_qt(float q[4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void DEG_id_tag_update(ID *id, unsigned int flags)
@ ID_RECALC_SYNC_TO_EVAL
Definition DNA_ID.h:1085
@ MB_TEXSPACE_FLAG_AUTO
@ MB_SCALE_RAD
@ MB_NEGATIVE
@ MB_HIDE
@ MB_BALL
@ MB_UPDATE_ALWAYS
@ MB_UPDATE_FAST
@ MB_UPDATE_NEVER
@ MB_UPDATE_HALFRES
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
#define RNA_POINTER_INVALIDATE(ptr)
ParameterFlag
Definition RNA_types.hh:396
@ PARM_RNAPTR
Definition RNA_types.hh:399
@ PARM_REQUIRED
Definition RNA_types.hh:397
@ FUNC_USE_REPORTS
Definition RNA_types.hh:680
@ PROP_FLOAT
Definition RNA_types.hh:67
@ PROP_BOOLEAN
Definition RNA_types.hh:65
@ PROP_ENUM
Definition RNA_types.hh:69
@ PROP_POINTER
Definition RNA_types.hh:70
@ PROP_COLLECTION
Definition RNA_types.hh:71
@ PROP_UNIT_LENGTH
Definition RNA_types.hh:77
#define RNA_TRANSLATION_PREC_DEFAULT
Definition RNA_types.hh:127
@ PROP_THICK_WRAP
Definition RNA_types.hh:312
@ PROP_PROPORTIONAL
Definition RNA_types.hh:250
@ PROP_EDITABLE
Definition RNA_types.hh:207
@ PROP_NEVER_NULL
Definition RNA_types.hh:266
@ PROP_XYZ
Definition RNA_types.hh:172
@ PROP_DISTANCE
Definition RNA_types.hh:159
@ PROP_EULER
Definition RNA_types.hh:169
@ PROP_NONE
Definition RNA_types.hh:136
@ PROP_TRANSLATION
Definition RNA_types.hh:164
@ PROP_UNSIGNED
Definition RNA_types.hh:152
@ PROP_QUATERNION
Definition RNA_types.hh:170
#define NC_GEOM
Definition WM_types.hh:360
#define ND_DATA
Definition WM_types.hh:475
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
void MEM_freeN(void *vmemh)
Definition mallocn.cc:105
void rna_def_animdata_common(StructRNA *srna)
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_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
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)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
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_editable_func(PropertyRNA *prop, const char *editable)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_function_flag(FunctionRNA *func, int flag)
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_struct_ui_icon(StructRNA *srna, int icon)
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_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_api_meta(StructRNA *srna)
static void rna_def_metaball_elements(BlenderRNA *brna, PropertyRNA *cprop)
Definition rna_meta.cc:270
void RNA_def_meta(BlenderRNA *brna)
Definition rna_meta.cc:425
static void rna_def_metaball(BlenderRNA *brna)
Definition rna_meta.cc:309
static void rna_def_metaelement(BlenderRNA *brna)
Definition rna_meta.cc:182
const EnumPropertyItem rna_enum_metaelem_type_items[]
#define FLT_MAX
Definition stdcycles.h:14
Definition DNA_ID.h:413
int us
Definition DNA_ID.h:435
char name[66]
Definition DNA_ID.h:425
ListBase elems
ListBase * editelems
float quat[4]
ID * owner_id
Definition RNA_types.hh:40
void * data
Definition RNA_types.hh:42
void WM_main_add_notifier(uint type, void *reference)
PointerRNA * ptr
Definition wm_files.cc:4126