4 * ***** BEGIN GPL LICENSE BLOCK *****
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software Foundation,
18 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 * Contributor(s): Blender Foundation (2008).
22 * ***** END GPL LICENSE BLOCK *****
27 #include "RNA_define.h"
28 #include "RNA_types.h"
30 #include "rna_internal.h"
32 #include "DNA_material_types.h"
33 #include "DNA_mesh_types.h"
34 #include "DNA_meshdata_types.h"
35 #include "DNA_object_types.h"
37 #include "BKE_customdata.h"
41 /*static float rna_MeshVertex_no_get(PointerRNA *ptr, int index)
43 MVert *mvert= (MVert*)ptr->data;
44 return mvert->no[index]/32767.0f;
47 static float rna_MeshVertex_bevel_weight_get(PointerRNA *ptr)
49 MVert *mvert= (MVert*)ptr->data;
50 return mvert->bweight/255.0f;
53 static void rna_MeshVertex_bevel_weight_set(PointerRNA *ptr, float value)
55 MVert *mvert= (MVert*)ptr->data;
56 mvert->bweight= (char)(CLAMPIS(value*255.0f, 0, 255));
59 static float rna_MEdge_bevel_weight_get(PointerRNA *ptr)
61 MEdge *medge= (MEdge*)ptr->data;
62 return medge->bweight/255.0f;
65 static void rna_MEdge_bevel_weight_set(PointerRNA *ptr, float value)
67 MEdge *medge= (MEdge*)ptr->data;
68 medge->bweight= (char)(CLAMPIS(value*255.0f, 0, 255));
71 static float rna_MEdge_crease_get(PointerRNA *ptr)
73 MEdge *medge= (MEdge*)ptr->data;
74 return medge->crease/255.0f;
77 static void rna_MEdge_crease_set(PointerRNA *ptr, float value)
79 MEdge *medge= (MEdge*)ptr->data;
80 medge->crease= (char)(CLAMPIS(value*255.0f, 0, 255));
83 static void rna_MeshColor_color1_get(PointerRNA *ptr, float *values)
85 MCol *mcol= (MCol*)ptr->data;
87 values[0]= (&mcol[0].r)[0]/255.0f;
88 values[1]= (&mcol[0].r)[1]/255.0f;
89 values[2]= (&mcol[0].r)[2]/255.0f;
92 static void rna_MeshColor_color1_set(PointerRNA *ptr, const float *values)
94 MCol *mcol= (MCol*)ptr->data;
96 (&mcol[0].r)[0]= (char)(CLAMPIS(values[0]*255.0f, 0, 255));
97 (&mcol[0].r)[1]= (char)(CLAMPIS(values[1]*255.0f, 0, 255));
98 (&mcol[0].r)[2]= (char)(CLAMPIS(values[2]*255.0f, 0, 255));
101 static void rna_MeshColor_color2_get(PointerRNA *ptr, float *values)
103 MCol *mcol= (MCol*)ptr->data;
105 values[0]= (&mcol[1].r)[0]/255.0f;
106 values[1]= (&mcol[1].r)[1]/255.0f;
107 values[2]= (&mcol[1].r)[2]/255.0f;
110 static void rna_MeshColor_color2_set(PointerRNA *ptr, const float *values)
112 MCol *mcol= (MCol*)ptr->data;
114 (&mcol[1].r)[0]= (char)(CLAMPIS(values[0]*255.0f, 0, 255));
115 (&mcol[1].r)[1]= (char)(CLAMPIS(values[1]*255.0f, 0, 255));
116 (&mcol[1].r)[2]= (char)(CLAMPIS(values[2]*255.0f, 0, 255));
119 static void rna_MeshColor_color3_get(PointerRNA *ptr, float *values)
121 MCol *mcol= (MCol*)ptr->data;
123 values[0]= (&mcol[2].r)[0]/255.0f;
124 values[1]= (&mcol[2].r)[1]/255.0f;
125 values[2]= (&mcol[2].r)[2]/255.0f;
128 static void rna_MeshColor_color3_set(PointerRNA *ptr, const float *values)
130 MCol *mcol= (MCol*)ptr->data;
132 (&mcol[2].r)[0]= (char)(CLAMPIS(values[0]*255.0f, 0, 255));
133 (&mcol[2].r)[1]= (char)(CLAMPIS(values[1]*255.0f, 0, 255));
134 (&mcol[2].r)[2]= (char)(CLAMPIS(values[2]*255.0f, 0, 255));
137 static void rna_MeshColor_color4_get(PointerRNA *ptr, float *values)
139 MCol *mcol= (MCol*)ptr->data;
141 values[0]= (&mcol[3].r)[0]/255.0f;
142 values[1]= (&mcol[3].r)[1]/255.0f;
143 values[2]= (&mcol[3].r)[2]/255.0f;
146 static void rna_MeshColor_color4_set(PointerRNA *ptr, const float *values)
148 MCol *mcol= (MCol*)ptr->data;
150 (&mcol[3].r)[0]= (char)(CLAMPIS(values[0]*255.0f, 0, 255));
151 (&mcol[3].r)[1]= (char)(CLAMPIS(values[1]*255.0f, 0, 255));
152 (&mcol[3].r)[2]= (char)(CLAMPIS(values[2]*255.0f, 0, 255));
155 static int rna_Mesh_texspace_editable(PointerRNA *ptr)
157 Mesh *me= (Mesh*)ptr->data;
158 return (me->texflag & AUTOSPACE)? 0: PROP_EDITABLE;
161 static void rna_MeshVertex_groups_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
163 Mesh *me= (Mesh*)ptr->id.data;
166 MVert *mvert= (MVert*)ptr->data;
167 MDeformVert *dvert= me->dvert + (mvert-me->mvert);
169 rna_iterator_array_begin(iter, (void*)dvert->dw, sizeof(MDeformWeight), dvert->totweight, NULL);
172 rna_iterator_array_begin(iter, NULL, 0, 0, NULL);
175 static void rna_MeshFace_material_index_range(PointerRNA *ptr, int *min, int *max)
177 Mesh *me= (Mesh*)ptr->id.data;
182 static int rna_CustomDataLayer_length(PointerRNA *ptr, int type)
184 Mesh *me= (Mesh*)ptr->id.data;
185 CustomDataLayer *layer;
188 for(layer=me->fdata.layers, i=0; i<me->fdata.totlayer; layer++, i++)
189 if(layer->type == type)
195 static int rna_CustomDataLayer_active_get(PointerRNA *ptr, int type, int render)
197 Mesh *me= (Mesh*)ptr->id.data;
198 int n= ((CustomDataLayer*)ptr->data) - me->fdata.layers;
200 if(render) return (n == CustomData_get_render_layer_index(&me->fdata, type));
201 else return (n == CustomData_get_active_layer_index(&me->fdata, type));
204 static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, int render)
206 Mesh *me= (Mesh*)ptr->id.data;
207 int n= ((CustomDataLayer*)ptr->data) - me->fdata.layers;
212 if(render) CustomData_set_layer_render_index(&me->fdata, type, n);
213 else CustomData_set_layer_active_index(&me->fdata, type, n);
216 static int rna_uv_layer_check(CollectionPropertyIterator *iter, void *data)
218 CustomDataLayer *layer= (CustomDataLayer*)data;
219 return (layer->type != CD_MTFACE);
222 static void rna_Mesh_uv_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
224 Mesh *me= (Mesh*)ptr->data;
225 rna_iterator_array_begin(iter, (void*)me->fdata.layers, sizeof(CustomDataLayer), me->fdata.totlayer, rna_uv_layer_check);
228 static int rna_Mesh_uv_layers_length(PointerRNA *ptr)
230 return rna_CustomDataLayer_length(ptr, CD_MTFACE);
233 static void rna_MeshTextureFace_uv1_get(PointerRNA *ptr, float *values)
235 MTFace *mtface= (MTFace*)ptr->data;
237 values[0]= mtface->uv[0][0];
238 values[1]= mtface->uv[0][1];
241 static void rna_MeshTextureFace_uv1_set(PointerRNA *ptr, const float *values)
243 MTFace *mtface= (MTFace*)ptr->data;
245 mtface->uv[0][0]= values[0];
246 mtface->uv[0][1]= values[1];
249 static void rna_MeshTextureFace_uv2_get(PointerRNA *ptr, float *values)
251 MTFace *mtface= (MTFace*)ptr->data;
253 values[0]= mtface->uv[1][0];
254 values[1]= mtface->uv[1][1];
257 static void rna_MeshTextureFace_uv2_set(PointerRNA *ptr, const float *values)
259 MTFace *mtface= (MTFace*)ptr->data;
261 mtface->uv[1][0]= values[0];
262 mtface->uv[1][1]= values[1];
265 static void rna_MeshTextureFace_uv3_get(PointerRNA *ptr, float *values)
267 MTFace *mtface= (MTFace*)ptr->data;
269 values[0]= mtface->uv[2][0];
270 values[1]= mtface->uv[2][1];
273 static void rna_MeshTextureFace_uv3_set(PointerRNA *ptr, const float *values)
275 MTFace *mtface= (MTFace*)ptr->data;
277 mtface->uv[2][0]= values[0];
278 mtface->uv[2][1]= values[1];
281 static void rna_MeshTextureFace_uv4_get(PointerRNA *ptr, float *values)
283 MTFace *mtface= (MTFace*)ptr->data;
285 values[0]= mtface->uv[3][0];
286 values[1]= mtface->uv[3][1];
289 static void rna_MeshTextureFace_uv4_set(PointerRNA *ptr, const float *values)
291 MTFace *mtface= (MTFace*)ptr->data;
293 mtface->uv[3][0]= values[0];
294 mtface->uv[3][1]= values[1];
297 static void rna_MeshTextureFaceLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
299 Mesh *me= (Mesh*)ptr->id.data;
300 CustomDataLayer *layer= (CustomDataLayer*)ptr->data;
301 rna_iterator_array_begin(iter, layer->data, sizeof(MTFace), me->totface, NULL);
304 static int rna_MeshTextureFaceLayer_data_length(PointerRNA *ptr)
306 Mesh *me= (Mesh*)ptr->id.data;
310 static int rna_MeshTextureFaceLayer_active_render_get(PointerRNA *ptr)
312 return rna_CustomDataLayer_active_get(ptr, CD_MTFACE, 1);
315 static int rna_MeshTextureFaceLayer_active_get(PointerRNA *ptr)
317 return rna_CustomDataLayer_active_get(ptr, CD_MTFACE, 0);
320 static void rna_MeshTextureFaceLayer_active_render_set(PointerRNA *ptr, int value)
322 rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 1);
325 static void rna_MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value)
327 rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 0);
330 static int rna_vcol_layer_check(CollectionPropertyIterator *iter, void *data)
332 CustomDataLayer *layer= (CustomDataLayer*)data;
333 return (layer->type != CD_MCOL);
336 static void rna_Mesh_vcol_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
338 Mesh *me= (Mesh*)ptr->data;
339 rna_iterator_array_begin(iter, (void*)me->fdata.layers, sizeof(CustomDataLayer), me->fdata.totlayer, rna_vcol_layer_check);
342 static int rna_Mesh_vcol_layers_length(PointerRNA *ptr)
344 return rna_CustomDataLayer_length(ptr, CD_MCOL);
347 static void rna_MeshColorLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
349 Mesh *me= (Mesh*)ptr->id.data;
350 CustomDataLayer *layer= (CustomDataLayer*)ptr->data;
351 rna_iterator_array_begin(iter, layer->data, sizeof(MCol)*4, me->totface, NULL);
354 static int rna_MeshColorLayer_data_length(PointerRNA *ptr)
356 Mesh *me= (Mesh*)ptr->id.data;
360 static int rna_MeshColorLayer_active_render_get(PointerRNA *ptr)
362 return rna_CustomDataLayer_active_get(ptr, CD_MCOL, 1);
365 static int rna_MeshColorLayer_active_get(PointerRNA *ptr)
367 return rna_CustomDataLayer_active_get(ptr, CD_MCOL, 0);
370 static void rna_MeshColorLayer_active_render_set(PointerRNA *ptr, int value)
372 rna_CustomDataLayer_active_set(ptr, value, CD_MCOL, 1);
375 static void rna_MeshColorLayer_active_set(PointerRNA *ptr, int value)
377 rna_CustomDataLayer_active_set(ptr, value, CD_MCOL, 0);
380 static void rna_MeshFloatPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
382 Mesh *me= (Mesh*)ptr->id.data;
383 CustomDataLayer *layer= (CustomDataLayer*)ptr->data;
384 rna_iterator_array_begin(iter, layer->data, sizeof(MFloatProperty), me->totface, NULL);
387 static int rna_MeshFloatPropertyLayer_data_length(PointerRNA *ptr)
389 Mesh *me= (Mesh*)ptr->id.data;
393 static int rna_float_layer_check(CollectionPropertyIterator *iter, void *data)
395 CustomDataLayer *layer= (CustomDataLayer*)data;
396 return (layer->type != CD_PROP_FLT);
399 static void rna_Mesh_float_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
401 Mesh *me= (Mesh*)ptr->data;
402 rna_iterator_array_begin(iter, (void*)me->fdata.layers, sizeof(CustomDataLayer), me->fdata.totlayer, rna_float_layer_check);
405 static int rna_Mesh_float_layers_length(PointerRNA *ptr)
407 return rna_CustomDataLayer_length(ptr, CD_PROP_FLT);
410 static int rna_int_layer_check(CollectionPropertyIterator *iter, void *data)
412 CustomDataLayer *layer= (CustomDataLayer*)data;
413 return (layer->type != CD_PROP_INT);
416 static void rna_MeshIntPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
418 Mesh *me= (Mesh*)ptr->id.data;
419 CustomDataLayer *layer= (CustomDataLayer*)ptr->data;
420 rna_iterator_array_begin(iter, layer->data, sizeof(MIntProperty), me->totface, NULL);
423 static int rna_MeshIntPropertyLayer_data_length(PointerRNA *ptr)
425 Mesh *me= (Mesh*)ptr->id.data;
429 static void rna_Mesh_int_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
431 Mesh *me= (Mesh*)ptr->data;
432 rna_iterator_array_begin(iter, (void*)me->fdata.layers, sizeof(CustomDataLayer), me->fdata.totlayer, rna_int_layer_check);
435 static int rna_Mesh_int_layers_length(PointerRNA *ptr)
437 return rna_CustomDataLayer_length(ptr, CD_PROP_INT);
440 static int rna_string_layer_check(CollectionPropertyIterator *iter, void *data)
442 CustomDataLayer *layer= (CustomDataLayer*)data;
443 return (layer->type != CD_PROP_STR);
446 static void rna_MeshStringPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
448 Mesh *me= (Mesh*)ptr->id.data;
449 CustomDataLayer *layer= (CustomDataLayer*)ptr->data;
450 rna_iterator_array_begin(iter, layer->data, sizeof(MStringProperty), me->totface, NULL);
453 static int rna_MeshStringPropertyLayer_data_length(PointerRNA *ptr)
455 Mesh *me= (Mesh*)ptr->id.data;
459 static void rna_Mesh_string_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
461 Mesh *me= (Mesh*)ptr->data;
462 rna_iterator_array_begin(iter, (void*)me->fdata.layers, sizeof(CustomDataLayer), me->fdata.totlayer, rna_string_layer_check);
465 static int rna_Mesh_string_layers_length(PointerRNA *ptr)
467 return rna_CustomDataLayer_length(ptr, CD_PROP_STR);
472 static void rna_def_mvert_group(BlenderRNA *brna)
477 srna= RNA_def_struct(brna, "VertexGroupElement", NULL);
478 RNA_def_struct_ui_text(srna, "Vertex Group Element", "Weight value of a vertex in a vertex group.");
479 RNA_def_struct_sdna(srna, "MDeformWeight");
481 /* we can't point to actual group, it is in the object and so
482 * there is no unique group to point to, hence the index */
483 prop= RNA_def_property(srna, "group", PROP_INT, PROP_UNSIGNED);
484 RNA_def_property_int_sdna(prop, NULL, "def_nr");
485 RNA_def_property_clear_flag(prop, PROP_EDITABLE);
486 RNA_def_property_ui_text(prop, "Group Index", "");
488 prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE);
489 RNA_def_property_range(prop, 0.0f, 1.0f);
490 RNA_def_property_ui_text(prop, "Weight", "Vertex Weight");
493 static void rna_def_mvert(BlenderRNA *brna)
498 srna= RNA_def_struct(brna, "MeshVertex", NULL);
499 RNA_def_struct_sdna(srna, "MVert");
500 RNA_def_struct_ui_text(srna, "Mesh Vertex", "Vertex in a Mesh datablock.");
502 prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_VECTOR);
503 RNA_def_property_ui_text(prop, "Location", "");
505 /*prop= RNA_def_property(srna, "no", PROP_FLOAT, PROP_VECTOR);
506 RNA_def_property_float_funcs(prop, "rna_MeshVertex_no_get", NULL, NULL);
507 RNA_def_property_ui_text(prop, "Normal", "Vertex Normal");
508 RNA_def_property_clear_flag(prop, PROP_EDITABLE);*/
510 prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
511 RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT);
512 RNA_def_property_ui_text(prop, "Selected", "");
514 prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE);
515 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE);
516 RNA_def_property_ui_text(prop, "Hidden", "");
518 prop= RNA_def_property(srna, "bevel_weight", PROP_FLOAT, PROP_NONE);
519 RNA_def_property_float_funcs(prop, "rna_MeshVertex_bevel_weight_get", "rna_MeshVertex_bevel_weight_set", NULL);
520 RNA_def_property_ui_text(prop, "Bevel Weight", "Weight used by the Bevel modifier 'Only Vertices' option");
522 prop= RNA_def_property(srna, "groups", PROP_COLLECTION, PROP_NONE);
523 RNA_def_property_collection_funcs(prop, "rna_MeshVertex_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0);
524 RNA_def_property_struct_type(prop, "VertexGroupElement");
525 RNA_def_property_ui_text(prop, "Groups", "Weights for the vertex groups this vertex is member of.");
528 static void rna_def_medge(BlenderRNA *brna)
533 srna= RNA_def_struct(brna, "MeshEdge", NULL);
534 RNA_def_struct_sdna(srna, "MEdge");
535 RNA_def_struct_ui_text(srna, "Mesh Edge", "Edge in a Mesh datablock.");
537 prop= RNA_def_property(srna, "verts", PROP_INT, PROP_UNSIGNED);
538 RNA_def_property_int_sdna(prop, NULL, "v1");
539 RNA_def_property_array(prop, 2);
540 RNA_def_property_clear_flag(prop, PROP_EDITABLE);
541 RNA_def_property_ui_text(prop, "Vertices", "Vertex indices");
543 prop= RNA_def_property(srna, "crease", PROP_FLOAT, PROP_NONE);
544 RNA_def_property_float_funcs(prop, "rna_MEdge_crease_get", "rna_MEdge_crease_set", NULL);
545 RNA_def_property_ui_text(prop, "Crease", "Weight used by the Subsurf modifier for creasing");
547 prop= RNA_def_property(srna, "bevel_weight", PROP_FLOAT, PROP_NONE);
548 RNA_def_property_float_funcs(prop, "rna_MEdge_bevel_weight_get", "rna_MEdge_bevel_weight_set", NULL);
549 RNA_def_property_ui_text(prop, "Bevel Weight", "Weight used by the Bevel modifier");
551 prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
552 RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT);
553 RNA_def_property_ui_text(prop, "Selected", "");
555 prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE);
556 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE);
557 RNA_def_property_ui_text(prop, "Hidden", "");
559 prop= RNA_def_property(srna, "seam", PROP_BOOLEAN, PROP_NONE);
560 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SEAM);
561 RNA_def_property_ui_text(prop, "Seam", "Seam edge for UV unwrapping");
563 prop= RNA_def_property(srna, "sharp", PROP_BOOLEAN, PROP_NONE);
564 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SHARP);
565 RNA_def_property_ui_text(prop, "Sharp", "Sharp edge for the EdgeSplit modifier");
568 static void rna_def_mface(BlenderRNA *brna)
573 srna= RNA_def_struct(brna, "MeshFace", NULL);
574 RNA_def_struct_sdna(srna, "MFace");
575 RNA_def_struct_ui_text(srna, "Mesh Face", "Face in a Mesh datablock.");
577 prop= RNA_def_property(srna, "verts", PROP_INT, PROP_UNSIGNED);
578 RNA_def_property_int_sdna(prop, NULL, "v1");
579 RNA_def_property_array(prop, 4);
580 RNA_def_property_clear_flag(prop, PROP_EDITABLE);
581 RNA_def_property_ui_text(prop, "Vertices", "Vertex indices");
583 prop= RNA_def_property(srna, "material_index", PROP_INT, PROP_UNSIGNED);
584 RNA_def_property_int_sdna(prop, NULL, "mat_nr");
585 RNA_def_property_ui_text(prop, "Material Index", "");
586 RNA_def_property_range(prop, 0, MAXMAT-1);
587 RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MeshFace_material_index_range");
589 prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
590 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_FACE_SEL);
591 RNA_def_property_ui_text(prop, "Selected", "");
593 prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE);
594 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE);
595 RNA_def_property_ui_text(prop, "Hidden", "");
597 prop= RNA_def_property(srna, "smooth", PROP_BOOLEAN, PROP_NONE);
598 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SMOOTH);
599 RNA_def_property_ui_text(prop, "Smooth", "");
602 static void rna_def_mtface(BlenderRNA *brna)
606 static const EnumPropertyItem transp_items[]= {
607 {TF_SOLID, "OPAQUE", "Opaque", "Render color of textured face as color"},
608 {TF_ADD, "ADD", "Add", "Render face transparent and add color of face"},
609 {TF_ALPHA, "ALPHA", "Alpha", "Render polygon transparent, depending on alpha channel of the texture"},
610 {TF_CLIP, "CLIPALPHA", "Clip Alpha", "Use the images alpha values clipped with no blending (binary alpha)"},
611 {0, NULL, NULL, NULL}};
613 srna= RNA_def_struct(brna, "MeshTextureFaceLayer", NULL);
614 RNA_def_struct_ui_text(srna, "Mesh Texture Face Layer", "Layer of texture faces in a Mesh datablock.");
615 RNA_def_struct_sdna(srna, "CustomDataLayer");
617 prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
618 RNA_def_struct_name_property(srna, prop);
619 RNA_def_property_ui_text(prop, "Name", "");
621 prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
622 RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_active_get", "rna_MeshTextureFaceLayer_active_set");
623 RNA_def_property_ui_text(prop, "Active", "Sets the layer as active for display and editing");
625 prop= RNA_def_property(srna, "active_render", PROP_BOOLEAN, PROP_NONE);
626 RNA_def_property_boolean_sdna(prop, NULL, "active_rnd", 0);
627 RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_active_render_get", "rna_MeshTextureFaceLayer_active_render_set");
628 RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering");
630 prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
631 RNA_def_property_struct_type(prop, "MeshTextureFace");
632 RNA_def_property_ui_text(prop, "Data", "");
633 RNA_def_property_collection_funcs(prop, "rna_MeshTextureFaceLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshTextureFaceLayer_data_length", 0, 0);
635 srna= RNA_def_struct(brna, "MeshTextureFace", NULL);
636 RNA_def_struct_sdna(srna, "MTFace");
637 RNA_def_struct_ui_text(srna, "Mesh Texture Face", "UV mapping, texturing and game engine data for a face.");
639 /* prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
640 RNA_def_property_pointer_sdna(prop, NULL, "tpage");
641 RNA_def_property_ui_text(prop, "Image", ""); */
643 prop= RNA_def_property(srna, "tex", PROP_BOOLEAN, PROP_NONE);
644 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_TEX);
645 RNA_def_property_ui_text(prop, "Tex", "Render face with texture");
647 prop= RNA_def_property(srna, "tiles", PROP_BOOLEAN, PROP_NONE);
648 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_TILES);
649 RNA_def_property_ui_text(prop, "Tiles", "Use tilemode for face");
651 prop= RNA_def_property(srna, "light", PROP_BOOLEAN, PROP_NONE);
652 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_LIGHT);
653 RNA_def_property_ui_text(prop, "Light", "Use light for face");
655 prop= RNA_def_property(srna, "invisible", PROP_BOOLEAN, PROP_NONE);
656 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_INVISIBLE);
657 RNA_def_property_ui_text(prop, "Invisible", "Make face invisible");
659 prop= RNA_def_property(srna, "collision", PROP_BOOLEAN, PROP_NONE);
660 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_DYNAMIC);
661 RNA_def_property_ui_text(prop, "Collision", "Use face for collision and ray-sensor detection");
663 prop= RNA_def_property(srna, "shared", PROP_BOOLEAN, PROP_NONE);
664 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_SHAREDCOL);
665 RNA_def_property_ui_text(prop, "Shared", "Blend vertex colors across face when vertices are shared");
667 prop= RNA_def_property(srna, "twoside", PROP_BOOLEAN, PROP_NONE);
668 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_TWOSIDE);
669 RNA_def_property_ui_text(prop, "Twoside", "Render face twosided");
671 prop= RNA_def_property(srna, "object_color", PROP_BOOLEAN, PROP_NONE);
672 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_OBCOL);
673 RNA_def_property_ui_text(prop, "Object Color", "Use ObColor instead of vertex colors");
675 prop= RNA_def_property(srna, "halo", PROP_BOOLEAN, PROP_NONE);
676 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BILLBOARD);
677 RNA_def_property_ui_text(prop, "Halo", "Screen aligned billboard");
679 prop= RNA_def_property(srna, "billboard", PROP_BOOLEAN, PROP_NONE);
680 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BILLBOARD2);
681 RNA_def_property_ui_text(prop, "Billboard", "Billboard with Z-axis constraint");
683 prop= RNA_def_property(srna, "shadow", PROP_BOOLEAN, PROP_NONE);
684 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_SHADOW);
685 RNA_def_property_ui_text(prop, "Shadow", "Face is used for shadow");
687 prop= RNA_def_property(srna, "text", PROP_BOOLEAN, PROP_NONE);
688 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BMFONT);
689 RNA_def_property_ui_text(prop, "Text", "Enable bitmap text on face");
691 prop= RNA_def_property(srna, "alpha_sort", PROP_BOOLEAN, PROP_NONE);
692 RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_ALPHASORT);
693 RNA_def_property_ui_text(prop, "Alpha Sort", "Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible)");
695 prop= RNA_def_property(srna, "transp", PROP_ENUM, PROP_NONE);
696 RNA_def_property_enum_items(prop, transp_items);
697 RNA_def_property_ui_text(prop, "Transparency", "Transparency blending mode");
699 prop= RNA_def_property(srna, "uv_selected", PROP_BOOLEAN, PROP_NONE);
700 RNA_def_property_boolean_sdna(prop, NULL, "flag", TF_SEL1);
701 RNA_def_property_array(prop, 4);
702 RNA_def_property_ui_text(prop, "UV Selected", "");
704 prop= RNA_def_property(srna, "uv_pinned", PROP_BOOLEAN, PROP_NONE);
705 RNA_def_property_boolean_sdna(prop, NULL, "unwrap", TF_PIN1);
706 RNA_def_property_array(prop, 4);
707 RNA_def_property_ui_text(prop, "UV Pinned", "");
709 prop= RNA_def_property(srna, "uv1", PROP_FLOAT, PROP_VECTOR);
710 RNA_def_property_array(prop, 2);
711 RNA_def_property_float_funcs(prop, "rna_MeshTextureFace_uv1_get", "rna_MeshTextureFace_uv1_set", NULL);
712 RNA_def_property_ui_text(prop, "UV 1", "");
714 prop= RNA_def_property(srna, "uv2", PROP_FLOAT, PROP_VECTOR);
715 RNA_def_property_array(prop, 2);
716 RNA_def_property_float_funcs(prop, "rna_MeshTextureFace_uv2_get", "rna_MeshTextureFace_uv2_set", NULL);
717 RNA_def_property_ui_text(prop, "UV 2", "");
719 prop= RNA_def_property(srna, "uv3", PROP_FLOAT, PROP_VECTOR);
720 RNA_def_property_array(prop, 2);
721 RNA_def_property_float_funcs(prop, "rna_MeshTextureFace_uv3_get", "rna_MeshTextureFace_uv3_set", NULL);
722 RNA_def_property_ui_text(prop, "UV 3", "");
724 prop= RNA_def_property(srna, "uv4", PROP_FLOAT, PROP_VECTOR);
725 RNA_def_property_array(prop, 2);
726 RNA_def_property_float_funcs(prop, "rna_MeshTextureFace_uv4_get", "rna_MeshTextureFace_uv4_set", NULL);
727 RNA_def_property_ui_text(prop, "UV 4", "");
730 static void rna_def_msticky(BlenderRNA *brna)
735 srna= RNA_def_struct(brna, "MeshSticky", NULL);
736 RNA_def_struct_sdna(srna, "MSticky");
737 RNA_def_struct_ui_text(srna, "Mesh Vertex Sticky Texture Coordinate", "Stricky texture coordinate.");
739 prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_VECTOR);
740 RNA_def_property_ui_text(prop, "Location", "Sticky texture coordinate location.");
743 static void rna_def_mcol(BlenderRNA *brna)
748 srna= RNA_def_struct(brna, "MeshColorLayer", NULL);
749 RNA_def_struct_ui_text(srna, "Mesh Vertex Color Layer", "Layer of vertex colors in a Mesh datablock.");
750 RNA_def_struct_sdna(srna, "CustomDataLayer");
752 prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
753 RNA_def_struct_name_property(srna, prop);
754 RNA_def_property_ui_text(prop, "Name", "");
756 prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
757 RNA_def_property_boolean_funcs(prop, "rna_MeshColorLayer_active_get", "rna_MeshColorLayer_active_set");
758 RNA_def_property_ui_text(prop, "Active", "Sets the layer as active for display and editing");
760 prop= RNA_def_property(srna, "active_render", PROP_BOOLEAN, PROP_NONE);
761 RNA_def_property_boolean_sdna(prop, NULL, "active_rnd", 0);
762 RNA_def_property_boolean_funcs(prop, "rna_MeshColorLayer_active_render_get", "rna_MeshColorLayer_active_render_set");
763 RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering");
765 prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
766 RNA_def_property_struct_type(prop, "MeshColor");
767 RNA_def_property_ui_text(prop, "Data", "");
768 RNA_def_property_collection_funcs(prop, "rna_MeshColorLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshColorLayer_data_length", 0, 0);
770 srna= RNA_def_struct(brna, "MeshColor", NULL);
771 RNA_def_struct_sdna(srna, "MCol");
772 RNA_def_struct_ui_text(srna, "Mesh Vertex Color", "Vertex colors for a face in a Mesh.");
774 prop= RNA_def_property(srna, "color1", PROP_FLOAT, PROP_COLOR);
775 RNA_def_property_array(prop, 3);
776 RNA_def_property_float_funcs(prop, "rna_MeshColor_color1_get", "rna_MeshColor_color1_set", NULL);
777 RNA_def_property_ui_text(prop, "Color 1", "");
779 prop= RNA_def_property(srna, "color2", PROP_FLOAT, PROP_COLOR);
780 RNA_def_property_array(prop, 3);
781 RNA_def_property_float_funcs(prop, "rna_MeshColor_color2_get", "rna_MeshColor_color2_set", NULL);
782 RNA_def_property_ui_text(prop, "Color 2", "");
784 prop= RNA_def_property(srna, "color3", PROP_FLOAT, PROP_COLOR);
785 RNA_def_property_array(prop, 3);
786 RNA_def_property_float_funcs(prop, "rna_MeshColor_color3_get", "rna_MeshColor_color3_set", NULL);
787 RNA_def_property_ui_text(prop, "Color 3", "");
789 prop= RNA_def_property(srna, "color4", PROP_FLOAT, PROP_COLOR);
790 RNA_def_property_array(prop, 3);
791 RNA_def_property_float_funcs(prop, "rna_MeshColor_color4_get", "rna_MeshColor_color4_set", NULL);
792 RNA_def_property_ui_text(prop, "Color 4", "");
795 static void rna_def_mproperties(BlenderRNA *brna)
801 srna= RNA_def_struct(brna, "MeshFloatPropertyLayer", NULL);
802 RNA_def_struct_sdna(srna, "CustomDataLayer");
803 RNA_def_struct_ui_text(srna, "Mesh Float Property Layer", "User defined layer of floating pointer number values.");
805 prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
806 RNA_def_struct_name_property(srna, prop);
807 RNA_def_property_ui_text(prop, "Name", "");
809 prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
810 RNA_def_property_struct_type(prop, "MeshFloatProperty");
811 RNA_def_property_ui_text(prop, "Data", "");
812 RNA_def_property_collection_funcs(prop, "rna_MeshFloatPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshFloatPropertyLayer_data_length", 0, 0);
814 srna= RNA_def_struct(brna, "MeshFloatProperty", NULL);
815 RNA_def_struct_sdna(srna, "MFloatProperty");
816 RNA_def_struct_ui_text(srna, "Mesh Float Property", "User defined floating point number value in a float properties layer.");
818 prop= RNA_def_property(srna, "value", PROP_FLOAT, PROP_NONE);
819 RNA_def_property_float_sdna(prop, NULL, "f");
820 RNA_def_property_ui_text(prop, "Value", "");
823 srna= RNA_def_struct(brna, "MeshIntPropertyLayer", NULL);
824 RNA_def_struct_sdna(srna, "CustomDataLayer");
825 RNA_def_struct_ui_text(srna, "Mesh Int Property Layer", "User defined layer of integer number values.");
827 prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
828 RNA_def_struct_name_property(srna, prop);
829 RNA_def_property_ui_text(prop, "Name", "");
831 prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
832 RNA_def_property_struct_type(prop, "MeshIntProperty");
833 RNA_def_property_ui_text(prop, "Data", "");
834 RNA_def_property_collection_funcs(prop, "rna_MeshIntPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshIntPropertyLayer_data_length", 0, 0);
836 srna= RNA_def_struct(brna, "MeshIntProperty", NULL);
837 RNA_def_struct_sdna(srna, "MIntProperty");
838 RNA_def_struct_ui_text(srna, "Mesh Int Property", "User defined integer number value in an integer properties layer.");
840 prop= RNA_def_property(srna, "value", PROP_INT, PROP_NONE);
841 RNA_def_property_int_sdna(prop, NULL, "i");
842 RNA_def_property_ui_text(prop, "Value", "");
845 srna= RNA_def_struct(brna, "MeshStringPropertyLayer", NULL);
846 RNA_def_struct_sdna(srna, "CustomDataLayer");
847 RNA_def_struct_ui_text(srna, "Mesh String Property Layer", "User defined layer of string text values.");
849 prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
850 RNA_def_struct_name_property(srna, prop);
851 RNA_def_property_ui_text(prop, "Name", "");
853 prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE);
854 RNA_def_property_struct_type(prop, "MeshStringProperty");
855 RNA_def_property_ui_text(prop, "Data", "");
856 RNA_def_property_collection_funcs(prop, "rna_MeshStringPropertyLayer_data_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", "rna_MeshStringPropertyLayer_data_length", 0, 0);
858 srna= RNA_def_struct(brna, "MeshStringProperty", NULL);
859 RNA_def_struct_sdna(srna, "MStringProperty");
860 RNA_def_struct_ui_text(srna, "Mesh String Property", "User defined string text value in a string properties layer.");
862 prop= RNA_def_property(srna, "value", PROP_STRING, PROP_NONE);
863 RNA_def_property_string_sdna(prop, NULL, "s");
864 RNA_def_property_ui_text(prop, "Value", "");
867 void rna_def_texmat_common(StructRNA *srna, const char *texspace_editable)
872 prop= RNA_def_property(srna, "auto_texspace", PROP_BOOLEAN, PROP_NONE);
873 RNA_def_property_boolean_sdna(prop, NULL, "texflag", AUTOSPACE);
874 RNA_def_property_ui_text(prop, "Auto Texture Space", "Adjusts active object's texture space automatically when transforming object.");
876 prop= RNA_def_property(srna, "texspace_loc", PROP_FLOAT, PROP_VECTOR);
877 RNA_def_property_float_sdna(prop, NULL, "loc");
878 RNA_def_property_ui_text(prop, "Texure Space Location", "Texture space location.");
879 RNA_def_property_editable_func(prop, texspace_editable);
881 prop= RNA_def_property(srna, "texspace_size", PROP_FLOAT, PROP_VECTOR);
882 RNA_def_property_float_sdna(prop, NULL, "size");
883 RNA_def_property_ui_text(prop, "Texture Space Size", "Texture space size.");
884 RNA_def_property_editable_func(prop, texspace_editable);
887 prop= RNA_def_property(srna, "texspace_rot", PROP_FLOAT, PROP_ROTATION);
888 RNA_def_property_float(prop, NULL, "rot");
889 RNA_def_property_ui_text(prop, "Texture Space Rotation", "Texture space rotation");
890 RNA_def_property_editable_func(prop, texspace_editable);*/
893 prop= RNA_def_property(srna, "materials", PROP_COLLECTION, PROP_NONE);
894 RNA_def_property_collection_sdna(prop, NULL, "mat", "totcol");
895 RNA_def_property_struct_type(prop, "Material");
896 RNA_def_property_ui_text(prop, "Materials", "");
900 static void rna_def_mesh(BlenderRNA *brna)
905 srna= RNA_def_struct(brna, "Mesh", "ID");
906 RNA_def_struct_ui_text(srna, "Mesh", "Mesh datablock to define geometric surfaces.");
908 prop= RNA_def_property(srna, "verts", PROP_COLLECTION, PROP_NONE);
909 RNA_def_property_collection_sdna(prop, NULL, "mvert", "totvert");
910 RNA_def_property_struct_type(prop, "MeshVertex");
911 RNA_def_property_ui_text(prop, "Vertices", "Vertices of the mesh.");
913 prop= RNA_def_property(srna, "edges", PROP_COLLECTION, PROP_NONE);
914 RNA_def_property_collection_sdna(prop, NULL, "medge", "totedge");
915 RNA_def_property_struct_type(prop, "MeshEdge");
916 RNA_def_property_ui_text(prop, "Edges", "Edges of the mesh.");
918 prop= RNA_def_property(srna, "faces", PROP_COLLECTION, PROP_NONE);
919 RNA_def_property_collection_sdna(prop, NULL, "mface", "totface");
920 RNA_def_property_struct_type(prop, "MeshFace");
921 RNA_def_property_ui_text(prop, "Faces", "Faces of the mesh.");
923 prop= RNA_def_property(srna, "sticky", PROP_COLLECTION, PROP_NONE);
924 RNA_def_property_collection_sdna(prop, NULL, "msticky", "totvert");
925 RNA_def_property_struct_type(prop, "MeshSticky");
926 RNA_def_property_ui_text(prop, "Sticky", "Sticky texture coordinates.");
928 prop= RNA_def_property(srna, "uv_layers", PROP_COLLECTION, PROP_NONE);
929 RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
930 RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_layers_begin", 0, 0, 0, "rna_Mesh_uv_layers_length", 0, 0);
931 RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
932 RNA_def_property_ui_text(prop, "UV Layers", "");
934 prop= RNA_def_property(srna, "vcol_layers", PROP_COLLECTION, PROP_NONE);
935 RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
936 RNA_def_property_collection_funcs(prop, "rna_Mesh_vcol_layers_begin", 0, 0, 0, "rna_Mesh_vcol_layers_length", 0, 0);
937 RNA_def_property_struct_type(prop, "MeshColorLayer");
938 RNA_def_property_ui_text(prop, "Vertex Color Layers", "");
940 prop= RNA_def_property(srna, "float_layers", PROP_COLLECTION, PROP_NONE);
941 RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
942 RNA_def_property_collection_funcs(prop, "rna_Mesh_float_layers_begin", 0, 0, 0, "rna_Mesh_float_layers_length", 0, 0);
943 RNA_def_property_struct_type(prop, "MeshFloatPropertyLayer");
944 RNA_def_property_ui_text(prop, "Float Property Layers", "");
946 prop= RNA_def_property(srna, "int_layers", PROP_COLLECTION, PROP_NONE);
947 RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
948 RNA_def_property_collection_funcs(prop, "rna_Mesh_int_layers_begin", 0, 0, 0, "rna_Mesh_int_layers_length", 0, 0);
949 RNA_def_property_struct_type(prop, "MeshIntPropertyLayer");
950 RNA_def_property_ui_text(prop, "Int Property Layers", "");
952 prop= RNA_def_property(srna, "string_layers", PROP_COLLECTION, PROP_NONE);
953 RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
954 RNA_def_property_collection_funcs(prop, "rna_Mesh_string_layers_begin", 0, 0, 0, "rna_Mesh_string_layers_length", 0, 0);
955 RNA_def_property_struct_type(prop, "MeshStringPropertyLayer");
956 RNA_def_property_ui_text(prop, "String Property Layers", "");
958 prop= RNA_def_property(srna, "autosmooth", PROP_BOOLEAN, PROP_NONE);
959 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_AUTOSMOOTH);
960 RNA_def_property_ui_text(prop, "Auto Smooth", "Treats all set-smoothed faces with angles less than the specified angle as 'smooth' during render");
962 prop= RNA_def_property(srna, "autosmooth_angle", PROP_INT, PROP_NONE);
963 RNA_def_property_int_sdna(prop, NULL, "smoothresh");
964 RNA_def_property_range(prop, 1, 80);
965 RNA_def_property_ui_text(prop, "Auto Smooth Angle", "Defines maximum angle between face normals that 'Auto Smooth' will operate on");
967 prop= RNA_def_property(srna, "vertex_normal_flip", PROP_BOOLEAN, PROP_NONE);
968 RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ME_NOPUNOFLIP);
969 RNA_def_property_ui_text(prop, "Vertex Normal Flip", "Flip vertex normals towards the camera during render");
971 prop= RNA_def_property(srna, "double_sided", PROP_BOOLEAN, PROP_NONE);
972 RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_TWOSIDED);
973 RNA_def_property_ui_text(prop, "Double Sided", "Render/display the mesh with double or single sided lighting");
975 prop= RNA_def_property(srna, "texco_mesh", PROP_POINTER, PROP_NONE);
976 RNA_def_property_pointer_sdna(prop, NULL, "texcomesh");
977 RNA_def_property_ui_text(prop, "Texture Space Mesh", "Derive texture coordinates from another mesh");
979 prop= RNA_def_property(srna, "shape_keys", PROP_POINTER, PROP_NONE);
980 RNA_def_property_pointer_sdna(prop, NULL, "key");
981 RNA_def_property_ui_text(prop, "Shape Keys", "");
983 rna_def_texmat_common(srna, "rna_Mesh_texspace_editable");
986 void RNA_def_mesh(BlenderRNA *brna)
990 rna_def_mvert_group(brna);
993 rna_def_mtface(brna);
994 rna_def_msticky(brna);
996 rna_def_mproperties(brna);