2008-11-07 02:58:25 +00:00
/**
* * * * * * BEGIN GPL LICENSE BLOCK * * * * *
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
2009-08-26 10:27:04 +00:00
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
2008-11-07 02:58:25 +00:00
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software Foundation ,
2010-02-12 13:34:04 +00:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 , USA .
2008-11-07 02:58:25 +00:00
*
* Contributor ( s ) : Blender Foundation ( 2008 ) .
*
* * * * * * END GPL LICENSE BLOCK * * * * *
*/
2009-07-16 09:17:27 +00:00
/*note: the original vertex color stuff is now just used for
getting info on the layers themselves , accessing the data is
done through the ( not yet written ) mpoly interfaces . */
2011-02-27 20:20:01 +00:00
/** \file blender/makesrna/intern/rna_mesh.c
* \ ingroup RNA
*/
2011-05-12 09:02:39 +00:00
2008-11-07 02:58:25 +00:00
# include <stdlib.h>
2011-11-17 05:03:07 +00:00
# include "MEM_guardedalloc.h"
2012-02-01 18:25:13 +00:00
# include "RNA_access.h"
2008-11-07 02:58:25 +00:00
# include "RNA_define.h"
# include "RNA_types.h"
# include "rna_internal.h"
2008-11-24 12:12:24 +00:00
# include "DNA_material_types.h"
2008-11-07 02:58:25 +00:00
# include "DNA_mesh_types.h"
# include "DNA_meshdata_types.h"
2008-11-24 12:12:24 +00:00
# include "DNA_object_types.h"
2011-05-12 09:02:39 +00:00
# include "WM_types.h"
2011-11-17 05:03:07 +00:00
# include "BLI_array.h"
2011-06-09 08:58:27 +00:00
# include "BLI_math_base.h"
# include "BLI_math_rotation.h"
2008-11-07 02:58:25 +00:00
# ifdef RNA_RUNTIME
2009-07-01 22:25:49 +00:00
# include "DNA_scene_types.h"
2009-11-10 20:43:45 +00:00
# include "BLI_math.h"
2009-07-01 22:25:49 +00:00
# include "BKE_customdata.h"
# include "BKE_depsgraph.h"
# include "BKE_main.h"
# include "BKE_mesh.h"
2009-07-16 06:27:37 +00:00
# include "BKE_tessmesh.h"
2009-07-01 22:25:49 +00:00
2011-05-12 09:02:39 +00:00
# include "ED_mesh.h" /* XXX Bad level call */
2009-07-01 22:25:49 +00:00
# include "WM_api.h"
# include "WM_types.h"
2011-11-24 06:55:53 +00:00
# include "rna_mesh_utils.h"
2011-11-17 05:03:07 +00:00
static Mesh * rna_mesh ( PointerRNA * ptr )
{
Mesh * me = ( Mesh * ) ptr - > id . data ;
return me ;
}
static CustomData * rna_mesh_pdata_helper ( Mesh * me )
{
return ( me - > edit_btmesh ) ? & me - > edit_btmesh - > bm - > pdata : & me - > pdata ;
}
static CustomData * rna_mesh_ldata_helper ( Mesh * me )
{
return ( me - > edit_btmesh ) ? & me - > edit_btmesh - > bm - > ldata : & me - > ldata ;
}
2011-11-25 13:28:04 +00:00
static CustomData * rna_mesh_fdata_helper ( Mesh * me )
{
return ( me - > edit_btmesh ) ? NULL : & me - > fdata ;
}
2011-11-17 05:03:07 +00:00
static CustomData * rna_mesh_pdata ( PointerRNA * ptr )
{
Mesh * me = rna_mesh ( ptr ) ;
return rna_mesh_pdata_helper ( me ) ;
}
static CustomData * rna_mesh_ldata ( PointerRNA * ptr )
{
Mesh * me = rna_mesh ( ptr ) ;
return rna_mesh_ldata_helper ( me ) ;
}
2011-11-25 13:28:04 +00:00
static CustomData * rna_mesh_fdata ( PointerRNA * ptr )
{
Mesh * me = rna_mesh ( ptr ) ;
return rna_mesh_fdata_helper ( me ) ;
}
2009-12-08 17:23:48 +00:00
static void rna_Mesh_update_data ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-07-01 22:25:49 +00:00
{
ID * id = ptr - > id . data ;
2010-08-13 14:42:45 +00:00
/* cheating way for importers to avoid slow updates */
if ( id - > us > 0 ) {
2011-05-12 09:02:39 +00:00
DAG_id_tag_update ( id , 0 ) ;
2010-08-13 14:42:45 +00:00
WM_main_add_notifier ( NC_GEOM | ND_DATA , id ) ;
}
2009-09-16 17:43:09 +00:00
}
2009-12-08 17:23:48 +00:00
static void rna_Mesh_update_select ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-09-16 17:43:09 +00:00
{
ID * id = ptr - > id . data ;
2010-08-13 14:42:45 +00:00
/* cheating way for importers to avoid slow updates */
if ( id - > us > 0 ) {
WM_main_add_notifier ( NC_GEOM | ND_SELECT , id ) ;
}
2009-09-16 17:43:09 +00:00
}
2009-12-08 17:23:48 +00:00
void rna_Mesh_update_draw ( Main * bmain , Scene * scene , PointerRNA * ptr )
2009-09-16 17:43:09 +00:00
{
ID * id = ptr - > id . data ;
2010-08-13 14:42:45 +00:00
/* cheating way for importers to avoid slow updates */
if ( id - > us > 0 ) {
WM_main_add_notifier ( NC_GEOM | ND_DATA , id ) ;
}
2009-07-01 22:25:49 +00:00
}
2011-09-18 17:10:28 +00:00
2011-07-20 15:56:35 +00:00
void rna_Mesh_update_vertmask ( Main * bmain , Scene * scene , PointerRNA * ptr )
{
Mesh * me = ptr - > data ;
if ( ( me - > editflag & ME_EDIT_VERT_SEL ) & & ( me - > editflag & ME_EDIT_PAINT_MASK ) ) {
me - > editflag ^ = ME_EDIT_PAINT_MASK ;
}
rna_Mesh_update_draw ( bmain , scene , ptr ) ;
}
2011-09-18 17:10:28 +00:00
2011-07-20 15:56:35 +00:00
void rna_Mesh_update_facemask ( Main * bmain , Scene * scene , PointerRNA * ptr )
{
Mesh * me = ptr - > data ;
if ( ( me - > editflag & ME_EDIT_VERT_SEL ) & & ( me - > editflag & ME_EDIT_PAINT_MASK ) ) {
me - > editflag ^ = ME_EDIT_VERT_SEL ;
}
rna_Mesh_update_draw ( bmain , scene , ptr ) ;
}
2009-06-20 15:06:18 +00:00
static void rna_MeshVertex_normal_get ( PointerRNA * ptr , float * value )
2008-11-24 12:12:24 +00:00
{
MVert * mvert = ( MVert * ) ptr - > data ;
2010-01-04 15:37:22 +00:00
normal_short_to_float_v3 ( value , mvert - > no ) ;
2009-06-20 15:06:18 +00:00
}
2010-01-04 15:37:22 +00:00
static void rna_MeshVertex_normal_set ( PointerRNA * ptr , const float * value )
2010-01-04 15:25:21 +00:00
{
MVert * mvert = ( MVert * ) ptr - > data ;
2010-01-04 15:37:22 +00:00
float no [ 3 ] ;
2010-01-04 15:25:21 +00:00
2010-01-04 15:37:22 +00:00
copy_v3_v3 ( no , value ) ;
normalize_v3 ( no ) ;
normal_float_to_short_v3 ( mvert - > no , no ) ;
2009-06-20 15:06:18 +00:00
}
2008-11-24 12:12:24 +00:00
2009-01-02 14:48:03 +00:00
static float rna_MeshVertex_bevel_weight_get ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
MVert * mvert = ( MVert * ) ptr - > data ;
return mvert - > bweight / 255.0f ;
}
2009-01-02 14:48:03 +00:00
static void rna_MeshVertex_bevel_weight_set ( PointerRNA * ptr , float value )
2008-11-24 12:12:24 +00:00
{
MVert * mvert = ( MVert * ) ptr - > data ;
mvert - > bweight = ( char ) ( CLAMPIS ( value * 255.0f , 0 , 255 ) ) ;
}
static float rna_MEdge_bevel_weight_get ( PointerRNA * ptr )
{
MEdge * medge = ( MEdge * ) ptr - > data ;
return medge - > bweight / 255.0f ;
}
static void rna_MEdge_bevel_weight_set ( PointerRNA * ptr , float value )
{
MEdge * medge = ( MEdge * ) ptr - > data ;
medge - > bweight = ( char ) ( CLAMPIS ( value * 255.0f , 0 , 255 ) ) ;
}
static float rna_MEdge_crease_get ( PointerRNA * ptr )
{
MEdge * medge = ( MEdge * ) ptr - > data ;
return medge - > crease / 255.0f ;
}
static void rna_MEdge_crease_set ( PointerRNA * ptr , float value )
{
MEdge * medge = ( MEdge * ) ptr - > data ;
medge - > crease = ( char ) ( CLAMPIS ( value * 255.0f , 0 , 255 ) ) ;
}
2011-08-31 05:13:21 +00:00
static void rna_MeshPolygon_normal_get ( PointerRNA * ptr , float * values )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2011-08-31 05:13:21 +00:00
MPoly * mp = ( MPoly * ) ptr - > data ;
2011-11-17 05:03:07 +00:00
/* BMESH_TODO: might be faster to look for a CD_NORMALS layer and use that */
2011-08-31 05:13:21 +00:00
mesh_calc_poly_normal ( mp , me - > mloop + mp - > loopstart , me - > mvert , values ) ;
}
2011-11-17 05:03:07 +00:00
static float rna_MeshPolygon_area_get ( PointerRNA * ptr )
{
Mesh * me = ( Mesh * ) ptr - > id . data ;
MPoly * mp = ( MPoly * ) ptr - > data ;
2011-11-29 02:58:38 +00:00
return mesh_calc_poly_area ( mp , me - > mloop + mp - > loopstart , me - > mvert , NULL ) ;
2011-11-17 05:03:07 +00:00
}
2009-07-27 18:17:21 +00:00
static void rna_MeshFace_normal_get ( PointerRNA * ptr , float * values )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2009-07-27 18:17:21 +00:00
MFace * mface = ( MFace * ) ptr - > data ;
2011-08-31 05:13:21 +00:00
2009-07-27 18:17:21 +00:00
if ( mface - > v4 )
2009-11-10 20:43:45 +00:00
normal_quad_v3 ( values , me - > mvert [ mface - > v1 ] . co , me - > mvert [ mface - > v2 ] . co , me - > mvert [ mface - > v3 ] . co , me - > mvert [ mface - > v4 ] . co ) ;
2009-07-27 18:17:21 +00:00
else
2009-11-10 20:43:45 +00:00
normal_tri_v3 ( values , me - > mvert [ mface - > v1 ] . co , me - > mvert [ mface - > v2 ] . co , me - > mvert [ mface - > v3 ] . co ) ;
2009-07-27 18:17:21 +00:00
}
2009-11-03 17:51:22 +00:00
static float rna_MeshFace_area_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2009-11-03 17:51:22 +00:00
MFace * mface = ( MFace * ) ptr - > data ;
if ( mface - > v4 )
2009-11-10 20:43:45 +00:00
return area_quad_v3 ( me - > mvert [ mface - > v1 ] . co , me - > mvert [ mface - > v2 ] . co , me - > mvert [ mface - > v3 ] . co , me - > mvert [ mface - > v4 ] . co ) ;
2009-11-03 17:51:22 +00:00
else
2009-11-10 20:43:45 +00:00
return area_tri_v3 ( me - > mvert [ mface - > v1 ] . co , me - > mvert [ mface - > v2 ] . co , me - > mvert [ mface - > v3 ] . co ) ;
2009-11-03 17:51:22 +00:00
}
2011-11-25 13:28:04 +00:00
static void rna_MeshTextureFace_uv1_get ( PointerRNA * ptr , float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
values [ 0 ] = mtface - > uv [ 0 ] [ 0 ] ;
values [ 1 ] = mtface - > uv [ 0 ] [ 1 ] ;
}
static void rna_MeshTextureFace_uv1_set ( PointerRNA * ptr , const float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
mtface - > uv [ 0 ] [ 0 ] = values [ 0 ] ;
mtface - > uv [ 0 ] [ 1 ] = values [ 1 ] ;
}
static void rna_MeshTextureFace_uv2_get ( PointerRNA * ptr , float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
values [ 0 ] = mtface - > uv [ 1 ] [ 0 ] ;
values [ 1 ] = mtface - > uv [ 1 ] [ 1 ] ;
}
static void rna_MeshTextureFace_uv2_set ( PointerRNA * ptr , const float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
mtface - > uv [ 1 ] [ 0 ] = values [ 0 ] ;
mtface - > uv [ 1 ] [ 1 ] = values [ 1 ] ;
}
static void rna_MeshTextureFace_uv3_get ( PointerRNA * ptr , float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
values [ 0 ] = mtface - > uv [ 2 ] [ 0 ] ;
values [ 1 ] = mtface - > uv [ 2 ] [ 1 ] ;
}
static void rna_MeshTextureFace_uv3_set ( PointerRNA * ptr , const float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
mtface - > uv [ 2 ] [ 0 ] = values [ 0 ] ;
mtface - > uv [ 2 ] [ 1 ] = values [ 1 ] ;
}
static void rna_MeshTextureFace_uv4_get ( PointerRNA * ptr , float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
values [ 0 ] = mtface - > uv [ 3 ] [ 0 ] ;
values [ 1 ] = mtface - > uv [ 3 ] [ 1 ] ;
}
static void rna_MeshTextureFace_uv4_set ( PointerRNA * ptr , const float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
mtface - > uv [ 3 ] [ 0 ] = values [ 0 ] ;
mtface - > uv [ 3 ] [ 1 ] = values [ 1 ] ;
}
static int rna_CustomDataData_numverts ( PointerRNA * ptr , int type )
{
Mesh * me = rna_mesh ( ptr ) ;
CustomData * fdata = rna_mesh_fdata ( ptr ) ;
CustomDataLayer * cdl ;
int a , b ;
for ( cdl = fdata - > layers , a = 0 ; a < fdata - > totlayer ; cdl + + , a + + ) {
if ( cdl - > type = = type ) {
b = ( ( char * ) ptr - > data - ( ( char * ) cdl - > data ) ) / CustomData_sizeof ( type ) ;
if ( b > = 0 & & b < me - > totface ) {
return ( me - > mface [ b ] . v4 ? 4 : 3 ) ;
}
}
}
return 0 ;
}
static int rna_MeshTextureFace_uv_get_length ( PointerRNA * ptr , int length [ RNA_MAX_ARRAY_DIMENSION ] )
{
length [ 0 ] = rna_CustomDataData_numverts ( ptr , CD_MTFACE ) ;
length [ 1 ] = 2 ;
return length [ 0 ] * length [ 1 ] ;
}
static void rna_MeshTextureFace_uv_get ( PointerRNA * ptr , float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
int totvert = rna_CustomDataData_numverts ( ptr , CD_MTFACE ) ;
memcpy ( values , mtface - > uv , totvert * 2 * sizeof ( float ) ) ;
}
static void rna_MeshTextureFace_uv_set ( PointerRNA * ptr , const float * values )
{
MTFace * mtface = ( MTFace * ) ptr - > data ;
int totvert = rna_CustomDataData_numverts ( ptr , CD_MTFACE ) ;
memcpy ( mtface - > uv , values , totvert * 2 * sizeof ( float ) ) ;
}
2009-06-20 13:53:14 +00:00
/* notice red and blue are swapped */
2009-02-02 19:57:57 +00:00
static void rna_MeshColor_color1_get ( PointerRNA * ptr , float * values )
2008-11-24 12:12:24 +00:00
{
MCol * mcol = ( MCol * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
2009-06-20 13:53:14 +00:00
values [ 2 ] = ( & mcol [ 0 ] . r ) [ 0 ] / 255.0f ;
2009-02-02 19:57:57 +00:00
values [ 1 ] = ( & mcol [ 0 ] . r ) [ 1 ] / 255.0f ;
2009-06-20 13:53:14 +00:00
values [ 0 ] = ( & mcol [ 0 ] . r ) [ 2 ] / 255.0f ;
2008-11-24 12:12:24 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_MeshColor_color1_set ( PointerRNA * ptr , const float * values )
2008-11-24 12:12:24 +00:00
{
MCol * mcol = ( MCol * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
2009-06-20 13:53:14 +00:00
( & mcol [ 0 ] . r ) [ 2 ] = ( char ) ( CLAMPIS ( values [ 0 ] * 255.0f , 0 , 255 ) ) ;
2009-02-02 19:57:57 +00:00
( & mcol [ 0 ] . r ) [ 1 ] = ( char ) ( CLAMPIS ( values [ 1 ] * 255.0f , 0 , 255 ) ) ;
2009-06-20 13:53:14 +00:00
( & mcol [ 0 ] . r ) [ 0 ] = ( char ) ( CLAMPIS ( values [ 2 ] * 255.0f , 0 , 255 ) ) ;
2008-11-24 12:12:24 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_MeshColor_color2_get ( PointerRNA * ptr , float * values )
2008-11-24 12:12:24 +00:00
{
MCol * mcol = ( MCol * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
2009-06-20 13:53:14 +00:00
values [ 2 ] = ( & mcol [ 1 ] . r ) [ 0 ] / 255.0f ;
2009-02-02 19:57:57 +00:00
values [ 1 ] = ( & mcol [ 1 ] . r ) [ 1 ] / 255.0f ;
2009-06-20 13:53:14 +00:00
values [ 0 ] = ( & mcol [ 1 ] . r ) [ 2 ] / 255.0f ;
2008-11-24 12:12:24 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_MeshColor_color2_set ( PointerRNA * ptr , const float * values )
2008-11-24 12:12:24 +00:00
{
MCol * mcol = ( MCol * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
2009-06-20 13:53:14 +00:00
( & mcol [ 1 ] . r ) [ 2 ] = ( char ) ( CLAMPIS ( values [ 0 ] * 255.0f , 0 , 255 ) ) ;
2009-02-02 19:57:57 +00:00
( & mcol [ 1 ] . r ) [ 1 ] = ( char ) ( CLAMPIS ( values [ 1 ] * 255.0f , 0 , 255 ) ) ;
2009-06-20 13:53:14 +00:00
( & mcol [ 1 ] . r ) [ 0 ] = ( char ) ( CLAMPIS ( values [ 2 ] * 255.0f , 0 , 255 ) ) ;
2008-11-24 12:12:24 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_MeshColor_color3_get ( PointerRNA * ptr , float * values )
2008-11-24 12:12:24 +00:00
{
MCol * mcol = ( MCol * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
2009-06-20 13:53:14 +00:00
values [ 2 ] = ( & mcol [ 2 ] . r ) [ 0 ] / 255.0f ;
2009-02-02 19:57:57 +00:00
values [ 1 ] = ( & mcol [ 2 ] . r ) [ 1 ] / 255.0f ;
2009-06-20 13:53:14 +00:00
values [ 0 ] = ( & mcol [ 2 ] . r ) [ 2 ] / 255.0f ;
2008-11-24 12:12:24 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_MeshColor_color3_set ( PointerRNA * ptr , const float * values )
2008-11-24 12:12:24 +00:00
{
MCol * mcol = ( MCol * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
2009-06-20 13:53:14 +00:00
( & mcol [ 2 ] . r ) [ 2 ] = ( char ) ( CLAMPIS ( values [ 0 ] * 255.0f , 0 , 255 ) ) ;
2009-02-02 19:57:57 +00:00
( & mcol [ 2 ] . r ) [ 1 ] = ( char ) ( CLAMPIS ( values [ 1 ] * 255.0f , 0 , 255 ) ) ;
2009-06-20 13:53:14 +00:00
( & mcol [ 2 ] . r ) [ 0 ] = ( char ) ( CLAMPIS ( values [ 2 ] * 255.0f , 0 , 255 ) ) ;
2008-11-24 12:12:24 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_MeshColor_color4_get ( PointerRNA * ptr , float * values )
2008-11-24 12:12:24 +00:00
{
MCol * mcol = ( MCol * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
2009-06-20 13:53:14 +00:00
values [ 2 ] = ( & mcol [ 3 ] . r ) [ 0 ] / 255.0f ;
2009-02-02 19:57:57 +00:00
values [ 1 ] = ( & mcol [ 3 ] . r ) [ 1 ] / 255.0f ;
2009-06-20 13:53:14 +00:00
values [ 0 ] = ( & mcol [ 3 ] . r ) [ 2 ] / 255.0f ;
2008-11-24 12:12:24 +00:00
}
2009-02-02 19:57:57 +00:00
static void rna_MeshColor_color4_set ( PointerRNA * ptr , const float * values )
2008-11-24 12:12:24 +00:00
{
MCol * mcol = ( MCol * ) ptr - > data ;
2009-02-02 19:57:57 +00:00
2009-06-20 13:53:14 +00:00
( & mcol [ 3 ] . r ) [ 2 ] = ( char ) ( CLAMPIS ( values [ 0 ] * 255.0f , 0 , 255 ) ) ;
2009-02-02 19:57:57 +00:00
( & mcol [ 3 ] . r ) [ 1 ] = ( char ) ( CLAMPIS ( values [ 1 ] * 255.0f , 0 , 255 ) ) ;
2009-06-20 13:53:14 +00:00
( & mcol [ 3 ] . r ) [ 0 ] = ( char ) ( CLAMPIS ( values [ 2 ] * 255.0f , 0 , 255 ) ) ;
2008-11-24 12:12:24 +00:00
}
2012-01-17 05:15:33 +00:00
static void rna_MeshLoopColor_color_get ( PointerRNA * ptr , float * values )
{
MLoopCol * mcol = ( MLoopCol * ) ptr - > data ;
values [ 2 ] = ( & mcol - > r ) [ 0 ] / 255.0f ;
values [ 1 ] = ( & mcol - > r ) [ 1 ] / 255.0f ;
values [ 0 ] = ( & mcol - > r ) [ 2 ] / 255.0f ;
}
static void rna_MeshLoopColor_color_set ( PointerRNA * ptr , const float * values )
{
MLoopCol * mcol = ( MLoopCol * ) ptr - > data ;
( & mcol - > r ) [ 2 ] = ( char ) ( CLAMPIS ( values [ 0 ] * 255.0f , 0 , 255 ) ) ;
( & mcol - > r ) [ 1 ] = ( char ) ( CLAMPIS ( values [ 1 ] * 255.0f , 0 , 255 ) ) ;
( & mcol - > r ) [ 0 ] = ( char ) ( CLAMPIS ( values [ 2 ] * 255.0f , 0 , 255 ) ) ;
}
2008-11-24 12:12:24 +00:00
static int rna_Mesh_texspace_editable ( PointerRNA * ptr )
{
Mesh * me = ( Mesh * ) ptr - > data ;
2012-02-19 22:17:30 +00:00
return ( me - > texflag & ME_AUTOSPACE ) ? 0 : PROP_EDITABLE ;
2008-11-24 12:12:24 +00:00
}
2009-01-02 14:48:03 +00:00
static void rna_MeshVertex_groups_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
if ( me - > dvert ) {
MVert * mvert = ( MVert * ) ptr - > data ;
MDeformVert * dvert = me - > dvert + ( mvert - me - > mvert ) ;
2009-07-13 19:33:59 +00:00
rna_iterator_array_begin ( iter , ( void * ) dvert - > dw , sizeof ( MDeformWeight ) , dvert - > totweight , 0 , NULL ) ;
2008-11-24 12:12:24 +00:00
}
else
2009-07-13 19:33:59 +00:00
rna_iterator_array_begin ( iter , NULL , 0 , 0 , 0 , NULL ) ;
2008-11-24 12:12:24 +00:00
}
2009-01-02 14:48:03 +00:00
static void rna_MeshFace_material_index_range ( PointerRNA * ptr , int * min , int * max )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
* min = 0 ;
* max = me - > totcol - 1 ;
2011-06-23 06:13:21 +00:00
* max = MAX2 ( 0 , * max ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-17 05:03:07 +00:00
static int rna_CustomDataLayer_active_get ( PointerRNA * ptr , CustomData * data , int type , int render )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
int n = ( ( CustomDataLayer * ) ptr - > data ) - data - > layers ;
2008-11-24 12:12:24 +00:00
2011-11-17 05:03:07 +00:00
if ( render ) return ( n = = CustomData_get_render_layer_index ( data , type ) ) ;
else return ( n = = CustomData_get_active_layer_index ( data , type ) ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-17 05:03:07 +00:00
static int rna_CustomDataLayer_clone_get ( PointerRNA * ptr , CustomData * data , int type , int render )
2009-11-24 00:56:52 +00:00
{
2011-11-17 05:03:07 +00:00
int n = ( ( CustomDataLayer * ) ptr - > data ) - data - > layers ;
2009-11-24 00:56:52 +00:00
2011-11-17 05:03:07 +00:00
return ( n = = CustomData_get_clone_layer_index ( data , type ) ) ;
2009-11-24 00:56:52 +00:00
}
2011-11-17 05:03:07 +00:00
static void rna_CustomDataLayer_active_set ( PointerRNA * ptr , CustomData * data , int value , int type , int render )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
int n = ( ( CustomDataLayer * ) ptr - > data ) - data - > layers ;
2008-11-24 12:12:24 +00:00
if ( value = = 0 )
return ;
2011-11-17 05:03:07 +00:00
if ( render ) CustomData_set_layer_render_index ( data , type , n ) ;
else CustomData_set_layer_active_index ( data , type , n ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-17 05:03:07 +00:00
static void rna_CustomDataLayer_clone_set ( PointerRNA * ptr , CustomData * data , int value , int type , int render )
2009-11-24 00:56:52 +00:00
{
2011-11-17 05:03:07 +00:00
int n = ( ( CustomDataLayer * ) ptr - > data ) - data - > layers ;
2009-11-24 00:56:52 +00:00
if ( value = = 0 )
return ;
2011-11-17 05:03:07 +00:00
CustomData_set_layer_clone_index ( data , type , n ) ;
}
/* uv_loop_layers */
2011-11-24 06:55:53 +00:00
DEFINE_CUSTOMDATA_LAYER_COLLECTION ( uv_loop_layer , ldata , CD_MLOOPUV )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( uv_loop_layer , ldata , CD_MLOOPUV , active , MeshUVLoopLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( uv_loop_layer , ldata , CD_MLOOPUV , clone , MeshUVLoopLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( uv_loop_layer , ldata , CD_MLOOPUV , stencil , MeshUVLoopLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( uv_loop_layer , ldata , CD_MLOOPUV , render , MeshUVLoopLayer )
2011-11-17 05:03:07 +00:00
2011-11-24 06:55:53 +00:00
/* MeshUVLoopLayer */
2011-11-17 05:03:07 +00:00
2011-11-24 06:55:53 +00:00
static char * rna_MeshUVLoopLayer_path ( PointerRNA * ptr )
2011-11-17 05:03:07 +00:00
{
2011-11-24 06:55:53 +00:00
return BLI_sprintfN ( " uv_loop_layer[ \" %s \" ] " , ( ( CustomDataLayer * ) ptr - > data ) - > name ) ;
2011-11-17 05:03:07 +00:00
}
2011-11-24 06:55:53 +00:00
static void rna_MeshUVLoopLayer_data_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
2011-11-17 05:03:07 +00:00
{
Mesh * me = rna_mesh ( ptr ) ;
2011-11-24 06:55:53 +00:00
CustomDataLayer * layer = ( CustomDataLayer * ) ptr - > data ;
rna_iterator_array_begin ( iter , layer - > data , sizeof ( MLoopUV ) , ( me - > edit_btmesh ) ? 0 : me - > totloop , 0 , NULL ) ;
2011-11-17 05:03:07 +00:00
}
2011-11-24 06:55:53 +00:00
static int rna_MeshUVLoopLayer_data_length ( PointerRNA * ptr )
2011-11-17 05:03:07 +00:00
{
Mesh * me = rna_mesh ( ptr ) ;
2011-11-24 06:55:53 +00:00
return ( me - > edit_btmesh ) ? 0 : me - > totloop ;
2009-11-24 00:56:52 +00:00
}
2011-11-25 13:28:04 +00:00
/* face uv_textures */
2011-11-17 05:03:07 +00:00
2011-11-25 13:28:04 +00:00
DEFINE_CUSTOMDATA_LAYER_COLLECTION ( tessface_uv_texture , fdata , CD_MTFACE )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( tessface_uv_texture , fdata , CD_MTFACE , active , MeshTextureFaceLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( tessface_uv_texture , fdata , CD_MTFACE , clone , MeshTextureFaceLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( tessface_uv_texture , fdata , CD_MTFACE , stencil , MeshTextureFaceLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( tessface_uv_texture , fdata , CD_MTFACE , render , MeshTextureFaceLayer )
2008-11-24 12:12:24 +00:00
2011-11-25 13:28:04 +00:00
static void rna_MeshTextureFaceLayer_data_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
{
2011-11-25 13:28:04 +00:00
Mesh * me = rna_mesh ( ptr ) ;
CustomDataLayer * layer = ( CustomDataLayer * ) ptr - > data ;
rna_iterator_array_begin ( iter , layer - > data , sizeof ( MTFace ) , ( me - > edit_btmesh ) ? 0 : me - > totface , 0 , NULL ) ;
}
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
2011-11-25 13:28:04 +00:00
static int rna_MeshTextureFaceLayer_data_length ( PointerRNA * ptr )
{
Mesh * me = rna_mesh ( ptr ) ;
return ( me - > edit_btmesh ) ? 0 : me - > totface ;
}
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
2011-11-25 13:28:04 +00:00
static int rna_MeshTextureFaceLayer_active_render_get ( PointerRNA * ptr )
{
return rna_CustomDataLayer_active_get ( ptr , rna_mesh_fdata ( ptr ) , CD_MTFACE , 1 ) ;
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
}
2011-11-25 13:28:04 +00:00
static int rna_MeshTextureFaceLayer_active_get ( PointerRNA * ptr )
{
return rna_CustomDataLayer_active_get ( ptr , rna_mesh_fdata ( ptr ) , CD_MTFACE , 0 ) ;
}
static int rna_MeshTextureFaceLayer_clone_get ( PointerRNA * ptr )
{
return rna_CustomDataLayer_clone_get ( ptr , rna_mesh_fdata ( ptr ) , CD_MTFACE , 0 ) ;
}
static void rna_MeshTextureFaceLayer_active_render_set ( PointerRNA * ptr , int value )
{
rna_CustomDataLayer_active_set ( ptr , rna_mesh_fdata ( ptr ) , value , CD_MTFACE , 1 ) ;
}
static void rna_MeshTextureFaceLayer_active_set ( PointerRNA * ptr , int value )
{
rna_CustomDataLayer_active_set ( ptr , rna_mesh_fdata ( ptr ) , value , CD_MTFACE , 0 ) ;
}
static void rna_MeshTextureFaceLayer_clone_set ( PointerRNA * ptr , int value )
{
rna_CustomDataLayer_clone_set ( ptr , rna_mesh_fdata ( ptr ) , value , CD_MTFACE , 0 ) ;
}
static void rna_MeshTextureFaceLayer_name_set ( PointerRNA * ptr , const char * value )
{
CustomData * fdata = rna_mesh_fdata ( ptr ) ;
CustomDataLayer * cdl = ( CustomDataLayer * ) ptr - > data ;
BLI_strncpy_utf8 ( cdl - > name , value , sizeof ( cdl - > name ) ) ;
CustomData_set_layer_unique_name ( fdata , cdl - fdata - > layers ) ;
}
/* poly uv_textures */
DEFINE_CUSTOMDATA_LAYER_COLLECTION ( uv_texture , pdata , CD_MTEXPOLY )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( uv_texture , pdata , CD_MTEXPOLY , active , MeshTexturePolyLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( uv_texture , pdata , CD_MTEXPOLY , clone , MeshTexturePolyLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( uv_texture , pdata , CD_MTEXPOLY , stencil , MeshTexturePolyLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( uv_texture , pdata , CD_MTEXPOLY , render , MeshTexturePolyLayer )
static void rna_MeshTexturePolyLayer_data_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
CustomDataLayer * layer = ( CustomDataLayer * ) ptr - > data ;
2011-11-17 05:03:07 +00:00
rna_iterator_array_begin ( iter , layer - > data , sizeof ( MTexPoly ) , ( me - > edit_btmesh ) ? 0 : me - > totpoly , 0 , NULL ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-25 13:28:04 +00:00
static int rna_MeshTexturePolyLayer_data_length ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
return ( me - > edit_btmesh ) ? 0 : me - > totpoly ;
2008-11-24 12:12:24 +00:00
}
2011-11-25 13:28:04 +00:00
static int rna_MeshTexturePolyLayer_active_render_get ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
return rna_CustomDataLayer_active_get ( ptr , rna_mesh_pdata ( ptr ) , CD_MTEXPOLY , 1 ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-25 13:28:04 +00:00
static int rna_MeshTexturePolyLayer_active_get ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
return rna_CustomDataLayer_active_get ( ptr , rna_mesh_pdata ( ptr ) , CD_MTEXPOLY , 0 ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-25 13:28:04 +00:00
static int rna_MeshTexturePolyLayer_clone_get ( PointerRNA * ptr )
2009-11-24 00:56:52 +00:00
{
2011-11-17 05:03:07 +00:00
return rna_CustomDataLayer_clone_get ( ptr , rna_mesh_pdata ( ptr ) , CD_MTEXPOLY , 0 ) ;
2009-11-24 00:56:52 +00:00
}
2011-11-25 13:28:04 +00:00
static void rna_MeshTexturePolyLayer_active_render_set ( PointerRNA * ptr , int value )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
rna_CustomDataLayer_active_set ( ptr , rna_mesh_pdata ( ptr ) , value , CD_MTEXPOLY , 1 ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-25 13:28:04 +00:00
static void rna_MeshTexturePolyLayer_active_set ( PointerRNA * ptr , int value )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
rna_CustomDataLayer_active_set ( ptr , rna_mesh_pdata ( ptr ) , value , CD_MTEXPOLY , 0 ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-25 13:28:04 +00:00
static void rna_MeshTexturePolyLayer_clone_set ( PointerRNA * ptr , int value )
2009-11-24 00:56:52 +00:00
{
2011-11-17 05:03:07 +00:00
rna_CustomDataLayer_clone_set ( ptr , rna_mesh_pdata ( ptr ) , value , CD_MTEXPOLY , 0 ) ;
2009-11-24 00:56:52 +00:00
}
2011-11-25 13:28:04 +00:00
static void rna_MeshTexturePolyLayer_name_set ( PointerRNA * ptr , const char * value )
2009-07-01 22:25:49 +00:00
{
2011-11-17 05:03:07 +00:00
CustomData * pdata = rna_mesh_pdata ( ptr ) ;
2009-07-01 22:25:49 +00:00
CustomDataLayer * cdl = ( CustomDataLayer * ) ptr - > data ;
2011-09-15 12:26:48 +00:00
BLI_strncpy_utf8 ( cdl - > name , value , sizeof ( cdl - > name ) ) ;
2011-11-17 05:03:07 +00:00
CustomData_set_layer_unique_name ( pdata , cdl - pdata - > layers ) ;
2009-07-01 22:25:49 +00:00
}
2011-11-24 06:55:53 +00:00
/* vertex_color_layers */
2009-07-01 22:25:49 +00:00
2011-11-25 13:28:04 +00:00
DEFINE_CUSTOMDATA_LAYER_COLLECTION ( tessface_vertex_color , fdata , CD_MCOL )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( tessface_vertex_color , fdata , CD_MCOL , active , MeshColorLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( tessface_vertex_color , fdata , CD_MCOL , render , MeshColorLayer )
2009-07-01 22:25:49 +00:00
2009-01-10 22:57:33 +00:00
static void rna_MeshColorLayer_data_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
CustomDataLayer * layer = ( CustomDataLayer * ) ptr - > data ;
2011-11-25 13:28:04 +00:00
rna_iterator_array_begin ( iter , layer - > data , sizeof ( CD_MCOL ) , me - > totloop , 0 , NULL ) ;
2008-11-24 12:12:24 +00:00
}
2009-01-10 22:57:33 +00:00
static int rna_MeshColorLayer_data_length ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2009-08-12 03:51:28 +00:00
return me - > totloop ;
2008-11-24 12:12:24 +00:00
}
2009-01-10 22:57:33 +00:00
static int rna_MeshColorLayer_active_render_get ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-25 13:28:04 +00:00
return rna_CustomDataLayer_active_get ( ptr , rna_mesh_fdata ( ptr ) , CD_MCOL , 1 ) ;
2008-11-24 12:12:24 +00:00
}
2009-01-10 22:57:33 +00:00
static int rna_MeshColorLayer_active_get ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-25 13:28:04 +00:00
return rna_CustomDataLayer_active_get ( ptr , rna_mesh_fdata ( ptr ) , CD_MCOL , 0 ) ;
2008-11-24 12:12:24 +00:00
}
2009-01-10 22:57:33 +00:00
static void rna_MeshColorLayer_active_render_set ( PointerRNA * ptr , int value )
2008-11-24 12:12:24 +00:00
{
2011-11-25 13:28:04 +00:00
rna_CustomDataLayer_active_set ( ptr , rna_mesh_fdata ( ptr ) , value , CD_MCOL , 1 ) ;
2008-11-24 12:12:24 +00:00
}
2009-01-10 22:57:33 +00:00
static void rna_MeshColorLayer_active_set ( PointerRNA * ptr , int value )
2011-11-25 13:28:04 +00:00
{
rna_CustomDataLayer_active_set ( ptr , rna_mesh_fdata ( ptr ) , value , CD_MCOL , 0 ) ;
}
DEFINE_CUSTOMDATA_LAYER_COLLECTION ( vertex_color , ldata , CD_MLOOPCOL )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( vertex_color , ldata , CD_MLOOPCOL , active , MeshLoopColorLayer )
DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM ( vertex_color , ldata , CD_MLOOPCOL , render , MeshLoopColorLayer )
static void rna_MeshLoopColorLayer_data_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
{
Mesh * me = rna_mesh ( ptr ) ;
CustomDataLayer * layer = ( CustomDataLayer * ) ptr - > data ;
rna_iterator_array_begin ( iter , layer - > data , sizeof ( CD_MLOOPCOL ) , me - > totloop , 0 , NULL ) ;
}
static int rna_MeshLoopColorLayer_data_length ( PointerRNA * ptr )
{
Mesh * me = rna_mesh ( ptr ) ;
return me - > totloop ;
}
static int rna_MeshLoopColorLayer_active_render_get ( PointerRNA * ptr )
{
return rna_CustomDataLayer_active_get ( ptr , rna_mesh_ldata ( ptr ) , CD_MLOOPCOL , 1 ) ;
}
static int rna_MeshLoopColorLayer_active_get ( PointerRNA * ptr )
{
return rna_CustomDataLayer_active_get ( ptr , rna_mesh_ldata ( ptr ) , CD_MLOOPCOL , 0 ) ;
}
static void rna_MeshLoopColorLayer_active_render_set ( PointerRNA * ptr , int value )
{
rna_CustomDataLayer_active_set ( ptr , rna_mesh_ldata ( ptr ) , value , CD_MLOOPCOL , 1 ) ;
}
static void rna_MeshLoopColorLayer_active_set ( PointerRNA * ptr , int value )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
rna_CustomDataLayer_active_set ( ptr , rna_mesh_ldata ( ptr ) , value , CD_MLOOPCOL , 0 ) ;
2008-11-24 12:12:24 +00:00
}
2011-11-25 13:28:04 +00:00
static void rna_MeshLoopColorLayer_name_set ( PointerRNA * ptr , const char * value )
2009-07-01 22:25:49 +00:00
{
2011-11-18 16:06:20 +00:00
/* Mesh *me = rna_mesh(ptr); */ /* UNUSED */
2011-11-17 05:03:07 +00:00
/* CustomData *pdata = rna_mesh_pdata(ptr); */ /* UNUSED */
2009-07-01 22:25:49 +00:00
CustomDataLayer * cdl = ( CustomDataLayer * ) ptr - > data ;
2011-09-15 12:26:48 +00:00
BLI_strncpy_utf8 ( cdl - > name , value , sizeof ( cdl - > name ) ) ;
2011-11-17 05:03:07 +00:00
CustomData_set_layer_unique_name ( rna_mesh_ldata ( ptr ) , cdl - rna_mesh_ldata ( ptr ) - > layers ) ;
2009-07-01 22:25:49 +00:00
}
2009-01-10 22:57:33 +00:00
static void rna_MeshFloatPropertyLayer_data_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
CustomDataLayer * layer = ( CustomDataLayer * ) ptr - > data ;
2009-07-13 19:33:59 +00:00
rna_iterator_array_begin ( iter , layer - > data , sizeof ( MFloatProperty ) , me - > totface , 0 , NULL ) ;
2008-11-24 12:12:24 +00:00
}
2009-01-10 22:57:33 +00:00
static int rna_MeshFloatPropertyLayer_data_length ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
return me - > totface ;
}
static int rna_float_layer_check ( CollectionPropertyIterator * iter , void * data )
{
CustomDataLayer * layer = ( CustomDataLayer * ) data ;
return ( layer - > type ! = CD_PROP_FLT ) ;
}
static void rna_Mesh_float_layers_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
CustomData * pdata = rna_mesh_pdata ( ptr ) ;
rna_iterator_array_begin ( iter , ( void * ) pdata - > layers , sizeof ( CustomDataLayer ) , pdata - > totlayer , 0 , rna_float_layer_check ) ;
2008-11-24 12:12:24 +00:00
}
static int rna_Mesh_float_layers_length ( PointerRNA * ptr )
{
2011-11-20 16:21:13 +00:00
return CustomData_number_of_layers ( rna_mesh_pdata ( ptr ) , CD_PROP_FLT ) ;
2008-11-24 12:12:24 +00:00
}
static int rna_int_layer_check ( CollectionPropertyIterator * iter , void * data )
{
CustomDataLayer * layer = ( CustomDataLayer * ) data ;
return ( layer - > type ! = CD_PROP_INT ) ;
}
2009-01-10 22:57:33 +00:00
static void rna_MeshIntPropertyLayer_data_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
CustomDataLayer * layer = ( CustomDataLayer * ) ptr - > data ;
2009-07-13 19:33:59 +00:00
rna_iterator_array_begin ( iter , layer - > data , sizeof ( MIntProperty ) , me - > totface , 0 , NULL ) ;
2008-11-24 12:12:24 +00:00
}
2009-01-10 22:57:33 +00:00
static int rna_MeshIntPropertyLayer_data_length ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
return me - > totface ;
}
static void rna_Mesh_int_layers_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
CustomData * pdata = rna_mesh_pdata ( ptr ) ;
rna_iterator_array_begin ( iter , ( void * ) pdata - > layers , sizeof ( CustomDataLayer ) , pdata - > totlayer , 0 , rna_int_layer_check ) ;
2008-11-24 12:12:24 +00:00
}
static int rna_Mesh_int_layers_length ( PointerRNA * ptr )
{
2011-11-20 16:21:13 +00:00
return CustomData_number_of_layers ( rna_mesh_pdata ( ptr ) , CD_PROP_INT ) ;
2008-11-24 12:12:24 +00:00
}
static int rna_string_layer_check ( CollectionPropertyIterator * iter , void * data )
{
CustomDataLayer * layer = ( CustomDataLayer * ) data ;
return ( layer - > type ! = CD_PROP_STR ) ;
}
2009-01-10 22:57:33 +00:00
static void rna_MeshStringPropertyLayer_data_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
CustomDataLayer * layer = ( CustomDataLayer * ) ptr - > data ;
2009-07-13 19:33:59 +00:00
rna_iterator_array_begin ( iter , layer - > data , sizeof ( MStringProperty ) , me - > totface , 0 , NULL ) ;
2008-11-24 12:12:24 +00:00
}
2009-01-10 22:57:33 +00:00
static int rna_MeshStringPropertyLayer_data_length ( PointerRNA * ptr )
2008-11-24 12:12:24 +00:00
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2008-11-24 12:12:24 +00:00
return me - > totface ;
}
static void rna_Mesh_string_layers_begin ( CollectionPropertyIterator * iter , PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
CustomData * pdata = rna_mesh_pdata ( ptr ) ;
rna_iterator_array_begin ( iter , ( void * ) pdata - > layers , sizeof ( CustomDataLayer ) , pdata - > totlayer , 0 , rna_string_layer_check ) ;
2008-11-24 12:12:24 +00:00
}
static int rna_Mesh_string_layers_length ( PointerRNA * ptr )
{
2011-11-20 16:21:13 +00:00
return CustomData_number_of_layers ( rna_mesh_pdata ( ptr ) , CD_PROP_STR ) ;
2008-11-24 12:12:24 +00:00
}
2009-05-29 15:12:31 +00:00
static void rna_TextureFace_image_set ( PointerRNA * ptr , PointerRNA value )
{
2009-07-16 09:17:27 +00:00
MTexPoly * tf = ( MTexPoly * ) ptr - > data ;
2009-05-29 15:12:31 +00:00
ID * id = value . data ;
if ( id ) {
/* special exception here, individual faces don't count
* as reference , but we do ensure the refcount is not zero */
if ( id - > us = = 0 )
id_us_plus ( id ) ;
else
id_lib_extern ( id ) ;
}
tf - > tpage = ( struct Image * ) id ;
}
2011-06-09 08:58:27 +00:00
static void rna_Mesh_auto_smooth_angle_set ( PointerRNA * ptr , float value )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2011-06-09 08:58:27 +00:00
value = RAD2DEGF ( value ) ;
CLAMP ( value , 1.0f , 80.0f ) ;
me - > smoothresh = ( int ) value ;
}
static float rna_Mesh_auto_smooth_angle_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2011-06-09 08:58:27 +00:00
return DEG2RADF ( ( float ) me - > smoothresh ) ;
}
2009-09-16 17:43:09 +00:00
static int rna_MeshFace_verts_get_length ( PointerRNA * ptr , int length [ RNA_MAX_ARRAY_DIMENSION ] )
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
{
MFace * face = ( MFace * ) ptr - > data ;
2009-09-16 17:43:09 +00:00
if ( face )
length [ 0 ] = ( face - > v4 ) ? 4 : 3 ;
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
else
2009-09-16 17:43:09 +00:00
length [ 0 ] = 4 ; // XXX rna_raw_access wants the length of a dummy face. this needs fixing. - Campbell
return length [ 0 ] ;
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
}
static void rna_MeshFace_verts_get ( PointerRNA * ptr , int * values )
{
MFace * face = ( MFace * ) ptr - > data ;
2009-09-16 17:43:09 +00:00
memcpy ( values , & face - > v1 , ( face - > v4 ? 4 : 3 ) * sizeof ( int ) ) ;
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
}
static void rna_MeshFace_verts_set ( PointerRNA * ptr , const int * values )
{
MFace * face = ( MFace * ) ptr - > data ;
memcpy ( & face - > v1 , values , ( face - > v4 ? 4 : 3 ) * sizeof ( int ) ) ;
}
2011-08-31 11:21:54 +00:00
/* poly.vertices - this is faked loop access for convenience */
static int rna_MeshPoly_vertices_get_length ( PointerRNA * ptr , int length [ RNA_MAX_ARRAY_DIMENSION ] )
{
MPoly * mp = ( MPoly * ) ptr - > data ;
/* note, raw access uses dummy item, this _could_ crash, watch out for this, mface uses it but it cant work here */
return ( length [ 0 ] = mp - > totloop ) ;
}
static void rna_MeshPoly_vertices_get ( PointerRNA * ptr , int * values )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2011-08-31 11:21:54 +00:00
MPoly * mp = ( MPoly * ) ptr - > data ;
MLoop * ml = & me - > mloop [ mp - > loopstart ] ;
unsigned int i ;
for ( i = mp - > totloop ; i > 0 ; i - - , values + + , ml + + ) {
* values = ml - > v ;
}
}
static void rna_MeshPoly_vertices_set ( PointerRNA * ptr , const int * values )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2011-08-31 11:21:54 +00:00
MPoly * mp = ( MPoly * ) ptr - > data ;
MLoop * ml = & me - > mloop [ mp - > loopstart ] ;
unsigned int i ;
for ( i = mp - > totloop ; i > 0 ; i - - , values + + , ml + + ) {
ml - > v = * values ;
}
}
2009-10-22 23:22:05 +00:00
static int rna_MeshVertex_index_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2009-10-22 23:22:05 +00:00
MVert * vert = ( MVert * ) ptr - > data ;
return ( int ) ( vert - me - > mvert ) ;
}
static int rna_MeshEdge_index_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2009-10-22 23:22:05 +00:00
MEdge * edge = ( MEdge * ) ptr - > data ;
return ( int ) ( edge - me - > medge ) ;
}
static int rna_MeshFace_index_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2009-10-22 23:22:05 +00:00
MFace * face = ( MFace * ) ptr - > data ;
return ( int ) ( face - me - > mface ) ;
}
2011-08-31 05:13:21 +00:00
static int rna_MeshPolygon_index_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2011-08-31 05:13:21 +00:00
MPoly * mpoly = ( MPoly * ) ptr - > data ;
return ( int ) ( mpoly - me - > mpoly ) ;
}
2009-03-25 20:29:01 +00:00
/* path construction */
static char * rna_VertexGroupElement_path ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ; /* XXX not always! */
2009-03-25 20:29:01 +00:00
MDeformWeight * dw = ( MDeformWeight * ) ptr - > data ;
MDeformVert * dvert ;
int a , b ;
for ( a = 0 , dvert = me - > dvert ; a < me - > totvert ; a + + , dvert + + )
for ( b = 0 ; b < dvert - > totweight ; b + + )
if ( dw = = & dvert - > dw [ b ] )
return BLI_sprintfN ( " verts[%d].groups[%d] " , a , b ) ;
return NULL ;
}
2011-08-31 05:13:21 +00:00
static char * rna_MeshPolygon_path ( PointerRNA * ptr )
{
2011-11-24 06:55:53 +00:00
return BLI_sprintfN ( " polygons[%d] " , ( int ) ( ( MPoly * ) ptr - > data - rna_mesh ( ptr ) - > mpoly ) ) ;
2011-08-31 05:13:21 +00:00
}
2009-03-25 20:29:01 +00:00
static char * rna_MeshFace_path ( PointerRNA * ptr )
{
2011-11-24 06:55:53 +00:00
return BLI_sprintfN ( " faces[%d] " , ( int ) ( ( MFace * ) ptr - > data - rna_mesh ( ptr ) - > mface ) ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshEdge_path ( PointerRNA * ptr )
{
2011-11-24 06:55:53 +00:00
return BLI_sprintfN ( " edges[%d] " , ( int ) ( ( MEdge * ) ptr - > data - rna_mesh ( ptr ) - > medge ) ) ;
2009-03-25 20:29:01 +00:00
}
2011-08-31 11:21:54 +00:00
static char * rna_MeshLoop_path ( PointerRNA * ptr )
{
2011-11-24 06:55:53 +00:00
return BLI_sprintfN ( " loops[%d] " , ( int ) ( ( MLoop * ) ptr - > data - rna_mesh ( ptr ) - > mloop ) ) ;
2011-08-31 11:21:54 +00:00
}
2009-03-25 20:29:01 +00:00
static char * rna_MeshVertex_path ( PointerRNA * ptr )
{
2011-11-24 06:55:53 +00:00
return BLI_sprintfN ( " vertices[%d] " , ( int ) ( ( MVert * ) ptr - > data - rna_mesh ( ptr ) - > mvert ) ) ;
2011-11-17 05:03:07 +00:00
}
2009-03-25 20:29:01 +00:00
static char * rna_MeshTextureFaceLayer_path ( PointerRNA * ptr )
2011-11-25 13:28:04 +00:00
{
return BLI_sprintfN ( " tessface_uv_textures[ \" %s \" ] " , ( ( CustomDataLayer * ) ptr - > data ) - > name ) ;
}
static char * rna_MeshTexturePolyLayer_path ( PointerRNA * ptr )
2009-03-25 20:29:01 +00:00
{
2009-11-03 22:07:15 +00:00
return BLI_sprintfN ( " uv_textures[ \" %s \" ] " , ( ( CustomDataLayer * ) ptr - > data ) - > name ) ;
2009-03-25 20:29:01 +00:00
}
2011-11-17 05:03:07 +00:00
static char * rna_PolyCustomData_data_path ( PointerRNA * ptr , char * collection , int type )
2009-03-25 20:29:01 +00:00
{
CustomDataLayer * cdl ;
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
CustomData * pdata = rna_mesh_pdata ( ptr ) ;
int a , b , totpoly = ( me - > edit_btmesh ) ? 0 : me - > totpoly ;
2009-03-25 20:29:01 +00:00
2011-11-17 05:03:07 +00:00
for ( cdl = pdata - > layers , a = 0 ; a < pdata - > totlayer ; cdl + + , a + + ) {
2009-03-25 20:29:01 +00:00
if ( cdl - > type = = type ) {
b = ( ( char * ) ptr - > data - ( ( char * ) cdl - > data ) ) / CustomData_sizeof ( type ) ;
2011-11-17 05:03:07 +00:00
if ( b > = 0 & & b < totpoly )
2009-11-03 22:07:15 +00:00
return BLI_sprintfN ( " %s[ \" %s \" ].data[%d] " , collection , cdl - > name , b ) ;
2009-03-25 20:29:01 +00:00
}
}
return NULL ;
}
2011-11-17 05:03:07 +00:00
static char * rna_LoopCustomData_data_path ( PointerRNA * ptr , char * collection , int type )
{
CustomDataLayer * cdl ;
Mesh * me = rna_mesh ( ptr ) ;
CustomData * ldata = rna_mesh_ldata ( ptr ) ;
int a , b , totloop = ( me - > edit_btmesh ) ? 0 : me - > totloop ;
for ( cdl = ldata - > layers , a = 0 ; a < ldata - > totlayer ; cdl + + , a + + ) {
if ( cdl - > type = = type ) {
b = ( ( char * ) ptr - > data - ( ( char * ) cdl - > data ) ) / CustomData_sizeof ( type ) ;
if ( b > = 0 & & b < totloop )
return BLI_sprintfN ( " %s[ \" %s \" ].data[%d] " , collection , cdl - > name , b ) ;
}
}
return NULL ;
}
2011-11-25 13:28:04 +00:00
static char * rna_FaceCustomData_data_path ( PointerRNA * ptr , char * collection , int type )
{
CustomDataLayer * cdl ;
Mesh * me = rna_mesh ( ptr ) ;
CustomData * fdata = rna_mesh_fdata ( ptr ) ;
int a , b , totloop = ( me - > edit_btmesh ) ? 0 : me - > totloop ;
for ( cdl = fdata - > layers , a = 0 ; a < fdata - > totlayer ; cdl + + , a + + ) {
if ( cdl - > type = = type ) {
b = ( ( char * ) ptr - > data - ( ( char * ) cdl - > data ) ) / CustomData_sizeof ( type ) ;
if ( b > = 0 & & b < totloop )
return BLI_sprintfN ( " %s[ \" %s \" ].data[%d] " , collection , cdl - > name , b ) ;
}
}
return NULL ;
}
2011-11-17 05:03:07 +00:00
static char * rna_MeshUVLoop_path ( PointerRNA * ptr )
{
return rna_LoopCustomData_data_path ( ptr , " uv_loop_layers " , CD_MLOOPUV ) ;
}
2009-03-25 20:29:01 +00:00
static char * rna_MeshTextureFace_path ( PointerRNA * ptr )
2011-11-25 13:28:04 +00:00
{
return rna_FaceCustomData_data_path ( ptr , " tessface_uv_textures " , CD_MTFACE ) ;
}
static char * rna_MeshTexturePoly_path ( PointerRNA * ptr )
2009-03-25 20:29:01 +00:00
{
2011-11-17 05:03:07 +00:00
return rna_PolyCustomData_data_path ( ptr , " uv_textures " , CD_MTEXPOLY ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshColorLayer_path ( PointerRNA * ptr )
2011-11-25 13:28:04 +00:00
{
return BLI_sprintfN ( " tessface_vertex_colors[ \" %s \" ] " , ( ( CustomDataLayer * ) ptr - > data ) - > name ) ;
}
static char * rna_MeshLoopColorLayer_path ( PointerRNA * ptr )
2009-03-25 20:29:01 +00:00
{
2009-11-03 22:07:15 +00:00
return BLI_sprintfN ( " vertex_colors[ \" %s \" ] " , ( ( CustomDataLayer * ) ptr - > data ) - > name ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshColor_path ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
return rna_LoopCustomData_data_path ( ptr , " vertex_colors " , CD_MLOOPCOL ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshSticky_path ( PointerRNA * ptr )
{
2011-11-24 06:55:53 +00:00
return BLI_sprintfN ( " sticky[%d] " , ( int ) ( ( MSticky * ) ptr - > data - rna_mesh ( ptr ) - > msticky ) ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshIntPropertyLayer_path ( PointerRNA * ptr )
{
2009-11-03 22:07:15 +00:00
return BLI_sprintfN ( " int_layers[ \" %s \" ] " , ( ( CustomDataLayer * ) ptr - > data ) - > name ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshIntProperty_path ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
return rna_PolyCustomData_data_path ( ptr , " layers_int " , CD_PROP_INT ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshFloatPropertyLayer_path ( PointerRNA * ptr )
{
2009-11-03 22:07:15 +00:00
return BLI_sprintfN ( " float_layers[ \" %s \" ] " , ( ( CustomDataLayer * ) ptr - > data ) - > name ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshFloatProperty_path ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
return rna_PolyCustomData_data_path ( ptr , " layers_float " , CD_PROP_FLT ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshStringPropertyLayer_path ( PointerRNA * ptr )
{
2009-11-03 22:07:15 +00:00
return BLI_sprintfN ( " string_layers[ \" %s \" ] " , ( ( CustomDataLayer * ) ptr - > data ) - > name ) ;
2009-03-25 20:29:01 +00:00
}
static char * rna_MeshStringProperty_path ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
return rna_PolyCustomData_data_path ( ptr , " layers_string " , CD_PROP_STR ) ;
2009-03-25 20:29:01 +00:00
}
2010-02-12 22:03:23 +00:00
static int rna_Mesh_tot_vert_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2010-03-09 04:32:40 +00:00
return me - > edit_btmesh ? me - > edit_btmesh - > bm - > totvertsel : 0 ;
2010-02-12 22:03:23 +00:00
}
static int rna_Mesh_tot_edge_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2010-03-09 04:32:40 +00:00
return me - > edit_btmesh ? me - > edit_btmesh - > bm - > totedgesel : 0 ;
2010-02-12 22:03:23 +00:00
}
static int rna_Mesh_tot_face_get ( PointerRNA * ptr )
{
2011-11-17 05:03:07 +00:00
Mesh * me = rna_mesh ( ptr ) ;
2010-03-09 04:32:40 +00:00
return me - > edit_btmesh ? me - > edit_btmesh - > bm - > totfacesel : 0 ;
2010-02-12 22:03:23 +00:00
}
2012-02-01 18:25:13 +00:00
static PointerRNA rna_Mesh_vertex_color_new ( struct Mesh * me , struct bContext * C , const char * name )
2010-09-07 05:47:34 +00:00
{
2012-02-01 18:25:13 +00:00
PointerRNA ptr ;
2012-02-02 00:04:47 +00:00
CustomData * ldata ;
2010-09-07 05:47:34 +00:00
CustomDataLayer * cdl = NULL ;
2012-02-01 18:25:13 +00:00
int index = ED_mesh_color_add ( C , NULL , NULL , me , name , FALSE ) ;
2010-09-07 05:47:34 +00:00
2012-02-01 18:25:13 +00:00
if ( index ! = - 1 ) {
2012-02-02 00:04:47 +00:00
ldata = rna_mesh_ldata_helper ( me ) ;
cdl = & ldata - > layers [ CustomData_get_layer_index_n ( ldata , CD_MLOOPCOL , index ) ] ;
2010-09-07 05:47:34 +00:00
}
2012-02-01 18:25:13 +00:00
2012-02-02 00:04:47 +00:00
RNA_pointer_create ( & me - > id , & RNA_MeshLoopColorLayer , cdl , & ptr ) ;
2012-02-01 18:25:13 +00:00
return ptr ;
2010-09-07 05:47:34 +00:00
}
2012-02-01 18:25:13 +00:00
static PointerRNA rna_Mesh_int_property_new ( struct Mesh * me , struct bContext * C , const char * name )
2011-11-15 12:28:13 +00:00
{
2012-02-01 18:25:13 +00:00
PointerRNA ptr ;
2011-11-15 12:28:13 +00:00
CustomDataLayer * cdl = NULL ;
int index ;
CustomData_add_layer_named ( & me - > fdata , CD_PROP_INT , CD_DEFAULT , NULL , me - > totface , name ) ;
index = CustomData_get_named_layer_index ( & me - > fdata , CD_PROP_INT , name ) ;
cdl = ( index = = - 1 ) ? NULL : & ( me - > fdata . layers [ index ] ) ;
2012-02-01 18:25:13 +00:00
RNA_pointer_create ( & me - > id , & RNA_MeshIntPropertyLayer , cdl , & ptr ) ;
return ptr ;
2011-11-15 12:28:13 +00:00
}
2012-02-01 18:25:13 +00:00
static PointerRNA rna_Mesh_float_property_new ( struct Mesh * me , struct bContext * C , const char * name )
2011-11-15 12:28:13 +00:00
{
2012-02-01 18:25:13 +00:00
PointerRNA ptr ;
2011-11-15 12:28:13 +00:00
CustomDataLayer * cdl = NULL ;
int index ;
CustomData_add_layer_named ( & me - > fdata , CD_PROP_FLT , CD_DEFAULT , NULL , me - > totface , name ) ;
index = CustomData_get_named_layer_index ( & me - > fdata , CD_PROP_FLT , name ) ;
cdl = ( index = = - 1 ) ? NULL : & ( me - > fdata . layers [ index ] ) ;
2012-02-01 18:25:13 +00:00
RNA_pointer_create ( & me - > id , & RNA_MeshFloatPropertyLayer , cdl , & ptr ) ;
return ptr ;
2011-11-15 12:28:13 +00:00
}
2012-02-01 18:25:13 +00:00
static PointerRNA rna_Mesh_string_property_new ( struct Mesh * me , struct bContext * C , const char * name )
2011-11-15 12:28:13 +00:00
{
2012-02-01 18:25:13 +00:00
PointerRNA ptr ;
2011-11-15 12:28:13 +00:00
CustomDataLayer * cdl = NULL ;
int index ;
CustomData_add_layer_named ( & me - > fdata , CD_PROP_STR , CD_DEFAULT , NULL , me - > totface , name ) ;
index = CustomData_get_named_layer_index ( & me - > fdata , CD_PROP_STR , name ) ;
cdl = ( index = = - 1 ) ? NULL : & ( me - > fdata . layers [ index ] ) ;
2012-02-01 18:25:13 +00:00
RNA_pointer_create ( & me - > id , & RNA_MeshStringPropertyLayer , cdl , & ptr ) ;
return ptr ;
2011-11-15 12:28:13 +00:00
}
2012-02-01 18:25:13 +00:00
static PointerRNA rna_Mesh_uv_texture_new ( struct Mesh * me , struct bContext * C , const char * name )
2010-09-07 05:47:34 +00:00
{
2012-02-01 18:25:13 +00:00
PointerRNA ptr ;
2012-02-02 00:04:47 +00:00
CustomData * pdata ;
2010-09-07 05:47:34 +00:00
CustomDataLayer * cdl = NULL ;
2012-02-02 00:04:47 +00:00
int index = ED_mesh_uv_texture_add ( C , me , name , FALSE ) ;
2010-09-07 05:47:34 +00:00
2012-02-01 18:25:13 +00:00
if ( index ! = - 1 ) {
2012-02-02 00:04:47 +00:00
pdata = rna_mesh_pdata_helper ( me ) ;
cdl = & pdata - > layers [ CustomData_get_layer_index_n ( pdata , CD_MTEXPOLY , index ) ] ;
2010-09-07 05:47:34 +00:00
}
2012-02-01 18:25:13 +00:00
2012-02-02 00:04:47 +00:00
RNA_pointer_create ( & me - > id , & RNA_MeshTexturePolyLayer , cdl , & ptr ) ;
2012-02-01 18:25:13 +00:00
return ptr ;
2010-02-12 22:03:23 +00:00
}
2008-11-07 02:58:25 +00:00
# else
2008-11-24 12:12:24 +00:00
static void rna_def_mvert_group ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
2009-01-10 22:57:33 +00:00
srna = RNA_def_struct ( brna , " VertexGroupElement " , NULL ) ;
2008-11-24 12:12:24 +00:00
RNA_def_struct_sdna ( srna , " MDeformWeight " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_VertexGroupElement_path " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Vertex Group Element " , " Weight value of a vertex in a vertex group " ) ;
2009-06-03 23:16:51 +00:00
RNA_def_struct_ui_icon ( srna , ICON_GROUP_VERTEX ) ;
2008-11-24 12:12:24 +00:00
2008-11-29 14:35:50 +00:00
/* we can't point to actual group, it is in the object and so
* there is no unique group to point to , hence the index */
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " group " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_sdna ( prop , NULL , " def_nr " ) ;
2009-03-23 13:24:48 +00:00
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Group Index " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " weight " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_range ( prop , 0.0f , 1.0f ) ;
RNA_def_property_ui_text ( prop , " Weight " , " Vertex Weight " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
}
static void rna_def_mvert ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
2009-01-02 14:48:03 +00:00
srna = RNA_def_struct ( brna , " MeshVertex " , NULL ) ;
RNA_def_struct_sdna ( srna , " MVert " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Vertex " , " Vertex in a Mesh datablock " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshVertex_path " ) ;
2009-06-03 23:16:51 +00:00
RNA_def_struct_ui_icon ( srna , ICON_VERTEXSEL ) ;
2008-11-24 12:12:24 +00:00
RNA: subtypes and units
* Reviewed subtypes, making them more specific and adding new ones.
* Subtypes now have an associated type of units (length, area, volume,
mass, rotation, time, velocity, acceleration). These are not used
yet anywhere.
* Centralized code that decides the name of array items based on
subtype (XYZ, RGB), was copied in 3 places.
* RNA_def_float etc functions still need to be update, will do this
later together with another change.
2009-08-10 21:31:05 +00:00
prop = RNA_def_property ( srna , " co " , PROP_FLOAT , PROP_TRANSLATION ) ;
2008-11-29 14:35:50 +00:00
RNA_def_property_ui_text ( prop , " Location " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
RNA: subtypes and units
* Reviewed subtypes, making them more specific and adding new ones.
* Subtypes now have an associated type of units (length, area, volume,
mass, rotation, time, velocity, acceleration). These are not used
yet anywhere.
* Centralized code that decides the name of array items based on
subtype (XYZ, RGB), was copied in 3 places.
* RNA_def_float etc functions still need to be update, will do this
later together with another change.
2009-08-10 21:31:05 +00:00
prop = RNA_def_property ( srna , " normal " , PROP_FLOAT , PROP_DIRECTION ) ;
2010-12-31 04:12:20 +00:00
// RNA_def_property_float_sdna(prop, NULL, "no");
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_range ( prop , - 1.0f , 1.0f ) ;
2010-01-04 15:25:21 +00:00
RNA_def_property_float_funcs ( prop , " rna_MeshVertex_normal_get " , " rna_MeshVertex_normal_set " , NULL ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Normal " , " Vertex Normal " ) ;
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " select " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , SELECT ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Select " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " hide " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_HIDE ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Hide " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " bevel_weight " , PROP_FLOAT , PROP_NONE ) ;
2009-01-02 14:48:03 +00:00
RNA_def_property_float_funcs ( prop , " rna_MeshVertex_bevel_weight_get " , " rna_MeshVertex_bevel_weight_set " , NULL ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Bevel Weight " , " Weight used by the Bevel modifier 'Only Vertices' option " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " groups " , PROP_COLLECTION , PROP_NONE ) ;
2011-10-09 07:31:15 +00:00
RNA_def_property_collection_funcs ( prop , " rna_MeshVertex_groups_begin " , " rna_iterator_array_next " , " rna_iterator_array_end " , " rna_iterator_array_get " , NULL , NULL , NULL , NULL ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_struct_type ( prop , " VertexGroupElement " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Groups " , " Weights for the vertex groups this vertex is member of " ) ;
2009-10-22 23:22:05 +00:00
prop = RNA_def_property ( srna , " index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_int_funcs ( prop , " rna_MeshVertex_index_get " , NULL , NULL ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Index " , " Index number of the vertex " ) ;
2008-11-24 12:12:24 +00:00
}
static void rna_def_medge ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
2009-01-02 14:48:03 +00:00
srna = RNA_def_struct ( brna , " MeshEdge " , NULL ) ;
RNA_def_struct_sdna ( srna , " MEdge " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Edge " , " Edge in a Mesh datablock " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshEdge_path " ) ;
2009-06-03 23:16:51 +00:00
RNA_def_struct_ui_icon ( srna , ICON_EDGESEL ) ;
2008-11-24 12:12:24 +00:00
2010-08-18 03:42:26 +00:00
prop = RNA_def_property ( srna , " vertices " , PROP_INT , PROP_UNSIGNED ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_int_sdna ( prop , NULL , " v1 " ) ;
RNA_def_property_array ( prop , 2 ) ;
RNA_def_property_ui_text ( prop , " Vertices " , " Vertex indices " ) ;
RNA
* Mesh.add_geometry, Mesh.update and make indices editable. This
is without checking if they are valid still, no time now to
implement this.
* Also fix warnings in rna_ui.c, and a bug in CDDM_calc_edges.
Example code:
co = [0.0, 0.0, 0.0] + [1.0, 0.0, 0.0] + [0.0, 1.0, 0.0] + [1.0, 1.0, 0.0]
faces = [0, 1, 2, 0] + [1, 3, 2, 0]
mesh.add_geometry(4, 0, 2)
mesh.verts.foreach_set("co", co)
mesh.faces.foreach_set("verts", faces)
mesh.update()
2009-07-01 12:19:00 +00:00
// XXX allows creating invalid meshes
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " crease " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_funcs ( prop , " rna_MEdge_crease_get " , " rna_MEdge_crease_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Crease " , " Weight used by the Subsurf modifier for creasing " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " bevel_weight " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_funcs ( prop , " rna_MEdge_bevel_weight_get " , " rna_MEdge_bevel_weight_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Bevel Weight " , " Weight used by the Bevel modifier " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " select " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , SELECT ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Select " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " hide " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_HIDE ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Hide " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
2010-08-18 07:14:10 +00:00
prop = RNA_def_property ( srna , " use_seam " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_SEAM ) ;
RNA_def_property_ui_text ( prop , " Seam " , " Seam edge for UV unwrapping " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
2010-08-20 06:09:58 +00:00
prop = RNA_def_property ( srna , " use_edge_sharp " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_SHARP ) ;
RNA_def_property_ui_text ( prop , " Sharp " , " Sharp edge for the EdgeSplit modifier " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-10-22 23:22:05 +00:00
2010-08-18 07:14:10 +00:00
prop = RNA_def_property ( srna , " is_loose " , PROP_BOOLEAN , PROP_NONE ) ;
2009-10-22 23:22:05 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_LOOSEEDGE ) ;
RNA_def_property_ui_text ( prop , " Loose " , " Loose edge " ) ;
2010-08-18 07:14:10 +00:00
prop = RNA_def_property ( srna , " is_fgon " , PROP_BOOLEAN , PROP_NONE ) ;
2009-10-22 23:22:05 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_FGON ) ;
RNA_def_property_ui_text ( prop , " Fgon " , " Fgon edge " ) ;
prop = RNA_def_property ( srna , " index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_int_funcs ( prop , " rna_MeshEdge_index_get " , NULL , NULL ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Index " , " Index number of the vertex " ) ;
2008-11-24 12:12:24 +00:00
}
static void rna_def_mface ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
2009-01-02 14:48:03 +00:00
srna = RNA_def_struct ( brna , " MeshFace " , NULL ) ;
RNA_def_struct_sdna ( srna , " MFace " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Face " , " Face in a Mesh datablock " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshFace_path " ) ;
2009-06-03 23:16:51 +00:00
RNA_def_struct_ui_icon ( srna , ICON_FACESEL ) ;
2008-11-24 12:12:24 +00:00
RNA
* Mesh.add_geometry, Mesh.update and make indices editable. This
is without checking if they are valid still, no time now to
implement this.
* Also fix warnings in rna_ui.c, and a bug in CDDM_calc_edges.
Example code:
co = [0.0, 0.0, 0.0] + [1.0, 0.0, 0.0] + [0.0, 1.0, 0.0] + [1.0, 1.0, 0.0]
faces = [0, 1, 2, 0] + [1, 3, 2, 0]
mesh.add_geometry(4, 0, 2)
mesh.verts.foreach_set("co", co)
mesh.faces.foreach_set("verts", faces)
mesh.update()
2009-07-01 12:19:00 +00:00
// XXX allows creating invalid meshes
2010-08-18 03:42:26 +00:00
prop = RNA_def_property ( srna , " vertices " , PROP_INT , PROP_UNSIGNED ) ;
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
RNA_def_property_array ( prop , 4 ) ;
RNA_def_property_flag ( prop , PROP_DYNAMIC ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_dynamic_array_funcs ( prop , " rna_MeshFace_verts_get_length " ) ;
Implemented dynamic and multidimensional array support in RNA.
Example code: http://www.pasteall.org/7332/c.
New API functions: http://www.pasteall.org/7330/c.
Maximum number of dimensions is currently limited to 3, but can be increased arbitrarily if needed.
What this means for ID property access:
* MeshFace.verts - dynamic array, size 3 or 4 depending on MFace.v4
* MeshTextureFace.uv - dynamic, 2-dimensional array, size depends on MFace.v4
* Object.matrix - 2-dimensional array
What this means for functions:
* more intuitive API possibility, for example:
Mesh.add_vertices([(x, y, z), (x, y, z), ...])
Mesh.add_faces([(1, 2, 3), (4, 5, 6), ...])
Python part is not complete yet, e.g. it is possible to:
MeshFace.verts = (1, 2, 3) # even if Mesh.verts is (1, 2, 3, 4) and vice-versa
MeshTextureFace.uv = [(0.0, 0.0)] * 4 # only if a corresponding MFace is a quad
but the following won't work:
MeshTextureFace.uv[3] = (0.0, 0.0) # setting uv[3] modifies MTFace.uv[1][0] instead of MTFace.uv[3]
2009-08-25 17:06:36 +00:00
RNA_def_property_int_funcs ( prop , " rna_MeshFace_verts_get " , " rna_MeshFace_verts_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Vertices " , " Vertex indices " ) ;
2008-11-24 12:12:24 +00:00
2009-10-22 23:22:05 +00:00
/* leaving this fixed size array for foreach_set used in import scripts */
2010-08-18 03:42:26 +00:00
prop = RNA_def_property ( srna , " vertices_raw " , PROP_INT , PROP_UNSIGNED ) ;
2009-10-22 23:22:05 +00:00
RNA_def_property_int_sdna ( prop , NULL , " v1 " ) ;
RNA_def_property_array ( prop , 4 ) ;
RNA_def_property_ui_text ( prop , " Vertices " , " Fixed size vertex indices array " ) ;
2009-01-02 14:48:03 +00:00
prop = RNA_def_property ( srna , " material_index " , PROP_INT , PROP_UNSIGNED ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_int_sdna ( prop , NULL , " mat_nr " ) ;
RNA_def_property_ui_text ( prop , " Material Index " , " " ) ;
2009-01-02 14:48:03 +00:00
RNA_def_property_int_funcs ( prop , NULL , NULL , " rna_MeshFace_material_index_range " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " select " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_FACE_SEL ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Select " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " hide " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_HIDE ) ;
2010-07-15 16:56:04 +00:00
RNA_def_property_ui_text ( prop , " Hide " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
2010-08-18 07:14:10 +00:00
prop = RNA_def_property ( srna , " use_smooth " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_SMOOTH ) ;
RNA_def_property_ui_text ( prop , " Smooth " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-07-27 18:17:21 +00:00
RNA: subtypes and units
* Reviewed subtypes, making them more specific and adding new ones.
* Subtypes now have an associated type of units (length, area, volume,
mass, rotation, time, velocity, acceleration). These are not used
yet anywhere.
* Centralized code that decides the name of array items based on
subtype (XYZ, RGB), was copied in 3 places.
* RNA_def_float etc functions still need to be update, will do this
later together with another change.
2009-08-10 21:31:05 +00:00
prop = RNA_def_property ( srna , " normal " , PROP_FLOAT , PROP_DIRECTION ) ;
2009-07-27 18:17:21 +00:00
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_range ( prop , - 1.0f , 1.0f ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshFace_normal_get " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " face normal " , " local space unit length normal vector for this face " ) ;
2009-10-22 23:22:05 +00:00
2009-11-03 17:51:22 +00:00
prop = RNA_def_property ( srna , " area " , PROP_FLOAT , PROP_UNSIGNED ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshFace_area_get " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " face area " , " read only area of the face " ) ;
2009-10-22 23:22:05 +00:00
prop = RNA_def_property ( srna , " index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_int_funcs ( prop , " rna_MeshFace_index_get " , NULL , NULL ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Index " , " Index number of the vertex " ) ;
2008-11-24 12:12:24 +00:00
}
2011-08-31 05:13:21 +00:00
2011-08-31 11:21:54 +00:00
static void rna_def_mloop ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
srna = RNA_def_struct ( brna , " MeshLoop " , NULL ) ;
RNA_def_struct_sdna ( srna , " MLoop " ) ;
RNA_def_struct_ui_text ( srna , " Mesh Loop " , " Loop in a Mesh datablock " ) ;
RNA_def_struct_path_func ( srna , " rna_MeshLoop_path " ) ;
RNA_def_struct_ui_icon ( srna , ICON_EDGESEL ) ;
prop = RNA_def_property ( srna , " vertex_index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_sdna ( prop , NULL , " v " ) ;
RNA_def_property_ui_text ( prop , " Vertex " , " Vertex index " ) ;
prop = RNA_def_property ( srna , " edge_index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_sdna ( prop , NULL , " e " ) ;
RNA_def_property_ui_text ( prop , " Edge " , " Edge index " ) ;
}
2011-08-31 05:13:21 +00:00
static void rna_def_mpolygon ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
srna = RNA_def_struct ( brna , " MeshPolygon " , NULL ) ;
RNA_def_struct_sdna ( srna , " MPoly " ) ;
RNA_def_struct_ui_text ( srna , " Mesh Polygon " , " Polygon in a Mesh datablock " ) ;
RNA_def_struct_path_func ( srna , " rna_MeshPolygon_path " ) ;
RNA_def_struct_ui_icon ( srna , ICON_FACESEL ) ;
2011-08-31 11:21:54 +00:00
/* faked, actually access to loop vertex values, dont this way because manually setting up vertex/edge per loop is very low level
* instead we setup poly sizes , assign indicies , then calc edges automatic when creating meshes from rna / py */
2011-08-31 05:13:21 +00:00
prop = RNA_def_property ( srna , " vertices " , PROP_INT , PROP_UNSIGNED ) ;
2011-08-31 11:21:54 +00:00
RNA_def_property_array ( prop , 3 ) ; // eek, this is still used in some cases but infact we dont want to use it at all here.
2011-08-31 05:13:21 +00:00
RNA_def_property_flag ( prop , PROP_DYNAMIC ) ;
2011-08-31 11:21:54 +00:00
RNA_def_property_dynamic_array_funcs ( prop , " rna_MeshPoly_vertices_get_length " ) ;
RNA_def_property_int_funcs ( prop , " rna_MeshPoly_vertices_get " , " rna_MeshPoly_vertices_set " , NULL ) ;
2011-08-31 05:13:21 +00:00
RNA_def_property_ui_text ( prop , " Vertices " , " Vertex indices " ) ;
2011-09-01 09:11:00 +00:00
/* these are both very low level access */
prop = RNA_def_property ( srna , " loop_start " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_sdna ( prop , NULL , " loopstart " ) ;
RNA_def_property_ui_text ( prop , " Loop Start " , " " ) ;
/* also low level */
prop = RNA_def_property ( srna , " loop_total " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_sdna ( prop , NULL , " totloop " ) ;
RNA_def_property_ui_text ( prop , " Loop Total " , " " ) ;
2011-08-31 05:13:21 +00:00
prop = RNA_def_property ( srna , " material_index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_sdna ( prop , NULL , " mat_nr " ) ;
RNA_def_property_ui_text ( prop , " Material Index " , " " ) ;
RNA_def_property_int_funcs ( prop , NULL , NULL , " rna_MeshFace_material_index_range " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " select " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_FACE_SEL ) ;
RNA_def_property_ui_text ( prop , " Select " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
prop = RNA_def_property ( srna , " hide " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_HIDE ) ;
RNA_def_property_ui_text ( prop , " Hide " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
prop = RNA_def_property ( srna , " use_smooth " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_SMOOTH ) ;
RNA_def_property_ui_text ( prop , " Smooth " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " normal " , PROP_FLOAT , PROP_DIRECTION ) ;
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_range ( prop , - 1.0f , 1.0f ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshPolygon_normal_get " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " face normal " , " local space unit length normal vector for this polygon " ) ;
prop = RNA_def_property ( srna , " area " , PROP_FLOAT , PROP_UNSIGNED ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshPolygon_area_get " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " face area " , " read only area of the face " ) ;
prop = RNA_def_property ( srna , " index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_int_funcs ( prop , " rna_MeshPolygon_index_get " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " Index " , " Index number of the vertex " ) ;
}
2011-11-17 05:03:07 +00:00
/* mesh.loop_uvs */
static void rna_def_mloopuv ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
srna = RNA_def_struct ( brna , " MeshUVLoopLayer " , NULL ) ;
RNA_def_struct_sdna ( srna , " CustomDataLayer " ) ;
RNA_def_struct_path_func ( srna , " rna_MeshUVLoopLayer_path " ) ;
prop = RNA_def_property ( srna , " data " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_struct_type ( prop , " MeshUVLoop " ) ;
RNA_def_property_collection_funcs ( prop , " rna_MeshUVLoopLayer_data_begin " , " rna_iterator_array_next " , " rna_iterator_array_end " , " rna_iterator_array_get " , " rna_MeshUVLoopLayer_data_length " , NULL , NULL , NULL ) ;
srna = RNA_def_struct ( brna , " MeshUVLoop " , NULL ) ;
RNA_def_struct_sdna ( srna , " MLoopUV " ) ;
RNA_def_struct_path_func ( srna , " rna_MeshUVLoop_path " ) ;
prop = RNA_def_property ( srna , " uv " , PROP_FLOAT , PROP_XYZ ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2011-12-08 00:18:57 +00:00
prop = RNA_def_property ( srna , " pin_uv " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , MLOOPUV_PINNED ) ;
RNA_def_property_ui_text ( prop , " UV Pinned " , " " ) ;
prop = RNA_def_property ( srna , " select " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , MLOOPUV_VERTSEL ) ;
2011-12-08 00:28:42 +00:00
RNA_def_property_ui_text ( prop , " UV Select " , " " ) ;
2011-12-08 00:18:57 +00:00
prop = RNA_def_property ( srna , " select_edge " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , MLOOPUV_EDGESEL ) ;
2011-12-08 00:28:42 +00:00
RNA_def_property_ui_text ( prop , " UV Edge Select " , " " ) ;
2011-11-17 05:03:07 +00:00
}
2011-11-25 13:28:04 +00:00
static void rna_def_mtface ( BlenderRNA * brna )
2008-11-24 12:12:24 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
2011-11-25 13:28:04 +00:00
const int uv_dim [ ] = { 4 , 2 } ;
2008-11-24 12:12:24 +00:00
2009-01-10 22:57:33 +00:00
srna = RNA_def_struct ( brna , " MeshTextureFaceLayer " , NULL ) ;
2011-11-23 17:25:25 +00:00
RNA_def_struct_ui_text ( srna , " Mesh UV Map " , " UV map with assigned image textures in a Mesh datablock " ) ;
2009-01-10 22:57:33 +00:00
RNA_def_struct_sdna ( srna , " CustomDataLayer " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshTextureFaceLayer_path " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_struct_ui_icon ( srna , ICON_GROUP_UVS ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " name " , PROP_STRING , PROP_NONE ) ;
RNA_def_struct_name_property ( srna , prop ) ;
2009-07-01 22:25:49 +00:00
RNA_def_property_string_funcs ( prop , NULL , NULL , " rna_MeshTextureFaceLayer_name_set " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Name " , " Name of UV map " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " active " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_funcs ( prop , " rna_MeshTextureFaceLayer_active_get " , " rna_MeshTextureFaceLayer_active_set " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Active " , " Set the map as active for display and editing " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " active_render " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " active_rnd " , 0 ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_boolean_funcs ( prop , " rna_MeshTextureFaceLayer_active_render_get " ,
" rna_MeshTextureFaceLayer_active_render_set " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Active Render " , " Set the map as active for rendering " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-01-10 22:57:33 +00:00
2009-11-24 00:56:52 +00:00
prop = RNA_def_property ( srna , " active_clone " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " active_clone " , 0 ) ;
RNA_def_property_boolean_funcs ( prop , " rna_MeshTextureFaceLayer_clone_get " , " rna_MeshTextureFaceLayer_clone_set " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Active Clone " , " Set the map as active for cloning " ) ;
2009-11-24 00:56:52 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " data " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_struct_type ( prop , " MeshTextureFace " ) ;
RNA_def_property_ui_text ( prop , " Data " , " " ) ;
2011-11-25 13:28:04 +00:00
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 " , NULL , NULL , NULL ) ;
2009-01-10 22:57:33 +00:00
2009-01-02 14:48:03 +00:00
srna = RNA_def_struct ( brna , " MeshTextureFace " , NULL ) ;
2011-11-25 13:28:04 +00:00
RNA_def_struct_sdna ( srna , " MTFace " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_struct_ui_text ( srna , " Mesh UV Map Face " , " UV map and image texture for a face " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshTextureFace_path " ) ;
2009-06-03 23:16:51 +00:00
RNA_def_struct_ui_icon ( srna , ICON_FACESEL_HLT ) ;
2008-11-24 12:12:24 +00:00
2011-11-25 13:28:04 +00:00
prop = RNA_def_property ( srna , " image " , PROP_POINTER , PROP_NONE ) ;
RNA_def_property_pointer_sdna ( prop , NULL , " tpage " ) ;
RNA_def_property_pointer_funcs ( prop , NULL , " rna_TextureFace_image_set " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " Image " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " select_uv " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , TF_SEL1 ) ;
RNA_def_property_array ( prop , 4 ) ;
RNA_def_property_ui_text ( prop , " UV Selected " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
prop = RNA_def_property ( srna , " pin_uv " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " unwrap " , TF_PIN1 ) ;
RNA_def_property_array ( prop , 4 ) ;
RNA_def_property_ui_text ( prop , " UV Pinned " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
prop = RNA_def_property ( srna , " uv1 " , PROP_FLOAT , PROP_XYZ ) ;
RNA_def_property_array ( prop , 2 ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshTextureFace_uv1_get " , " rna_MeshTextureFace_uv1_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " UV 1 " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " uv2 " , PROP_FLOAT , PROP_XYZ ) ;
RNA_def_property_array ( prop , 2 ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshTextureFace_uv2_get " , " rna_MeshTextureFace_uv2_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " UV 2 " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " uv3 " , PROP_FLOAT , PROP_XYZ ) ;
RNA_def_property_array ( prop , 2 ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshTextureFace_uv3_get " , " rna_MeshTextureFace_uv3_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " UV 3 " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " uv4 " , PROP_FLOAT , PROP_XYZ ) ;
RNA_def_property_array ( prop , 2 ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshTextureFace_uv4_get " , " rna_MeshTextureFace_uv4_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " UV 4 " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " uv " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_multi_array ( prop , 2 , uv_dim ) ;
RNA_def_property_flag ( prop , PROP_DYNAMIC ) ;
RNA_def_property_dynamic_array_funcs ( prop , " rna_MeshTextureFace_uv_get_length " ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshTextureFace_uv_get " , " rna_MeshTextureFace_uv_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " UV " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " uv_raw " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_multi_array ( prop , 2 , uv_dim ) ;
RNA_def_property_float_sdna ( prop , NULL , " uv " ) ;
RNA_def_property_ui_text ( prop , " UV " , " Fixed size UV coordinates array " ) ;
}
static void rna_def_mtexpoly ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
#if 0 /* BMESH_TODO: needed later when do another todo */
int uv_dim [ ] = { 4 , 2 } ;
# endif
srna = RNA_def_struct ( brna , " MeshTexturePolyLayer " , NULL ) ;
RNA_def_struct_ui_text ( srna , " Mesh UV Map " , " UV map with assigned image textures in a Mesh datablock " ) ;
RNA_def_struct_sdna ( srna , " CustomDataLayer " ) ;
RNA_def_struct_path_func ( srna , " rna_MeshTexturePolyLayer_path " ) ;
RNA_def_struct_ui_icon ( srna , ICON_GROUP_UVS ) ;
prop = RNA_def_property ( srna , " name " , PROP_STRING , PROP_NONE ) ;
RNA_def_struct_name_property ( srna , prop ) ;
RNA_def_property_string_funcs ( prop , NULL , NULL , " rna_MeshTexturePolyLayer_name_set " ) ;
RNA_def_property_ui_text ( prop , " Name " , " Name of UV map " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_funcs ( prop , " rna_MeshTexturePolyLayer_active_get " , " rna_MeshTexturePolyLayer_active_set " ) ;
RNA_def_property_ui_text ( prop , " Active " , " Set the map as active for display and editing " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active_render " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " active_rnd " , 0 ) ;
RNA_def_property_boolean_funcs ( prop , " rna_MeshTexturePolyLayer_active_render_get " , " rna_MeshTexturePolyLayer_active_render_set " ) ;
RNA_def_property_ui_text ( prop , " Active Render " , " Set the map as active for rendering " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active_clone " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " active_clone " , 0 ) ;
RNA_def_property_boolean_funcs ( prop , " rna_MeshTexturePolyLayer_clone_get " , " rna_MeshTexturePolyLayer_clone_set " ) ;
RNA_def_property_ui_text ( prop , " Active Clone " , " Set the map as active for cloning " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " data " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_struct_type ( prop , " MeshTexturePoly " ) ;
RNA_def_property_ui_text ( prop , " Data " , " " ) ;
RNA_def_property_collection_funcs ( prop , " rna_MeshTexturePolyLayer_data_begin " , " rna_iterator_array_next " , " rna_iterator_array_end " , " rna_iterator_array_get " , " rna_MeshTexturePolyLayer_data_length " , NULL , NULL , NULL ) ;
srna = RNA_def_struct ( brna , " MeshTexturePoly " , NULL ) ;
RNA_def_struct_sdna ( srna , " MTexPoly " ) ;
RNA_def_struct_ui_text ( srna , " Mesh UV Map Face " , " UV map and image texture for a face " ) ;
RNA_def_struct_path_func ( srna , " rna_MeshTexturePoly_path " ) ;
RNA_def_struct_ui_icon ( srna , ICON_FACESEL_HLT ) ;
2009-05-29 15:12:31 +00:00
prop = RNA_def_property ( srna , " image " , PROP_POINTER , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_pointer_sdna ( prop , NULL , " tpage " ) ;
2010-08-03 05:14:59 +00:00
RNA_def_property_pointer_funcs ( prop , NULL , " rna_TextureFace_image_set " , NULL , NULL ) ;
2009-05-29 15:12:31 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_ui_text ( prop , " Image " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
2010-07-15 16:56:04 +00:00
prop = RNA_def_property ( srna , " select_uv " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , TF_SEL1 ) ;
RNA_def_property_array ( prop , 4 ) ;
RNA_def_property_ui_text ( prop , " UV Selected " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
2011-12-08 00:18:57 +00:00
#if 0 /* moved to MeshUVLoopLayer */
2010-08-19 12:51:31 +00:00
prop = RNA_def_property ( srna , " pin_uv " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " unwrap " , TF_PIN1 ) ;
RNA_def_property_array ( prop , 4 ) ;
RNA_def_property_ui_text ( prop , " UV Pinned " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_select " ) ;
2008-11-24 12:12:24 +00:00
2010-01-04 22:30:09 +00:00
prop = RNA_def_property ( srna , " uv_raw " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_multi_array ( prop , 2 , uv_dim ) ;
RNA_def_property_float_sdna ( prop , NULL , " uv " ) ;
RNA_def_property_ui_text ( prop , " UV " , " Fixed size UV coordinates array " ) ;
2010-01-13 07:26:11 +00:00
# endif
2009-01-10 22:57:33 +00:00
}
2008-11-24 12:12:24 +00:00
2009-01-10 22:57:33 +00:00
static void rna_def_msticky ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
srna = RNA_def_struct ( brna , " MeshSticky " , NULL ) ;
RNA_def_struct_sdna ( srna , " MSticky " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Vertex Sticky Texture Coordinate " , " Stricky texture coordinate " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshSticky_path " ) ;
2009-01-10 22:57:33 +00:00
RNA: subtypes and units
* Reviewed subtypes, making them more specific and adding new ones.
* Subtypes now have an associated type of units (length, area, volume,
mass, rotation, time, velocity, acceleration). These are not used
yet anywhere.
* Centralized code that decides the name of array items based on
subtype (XYZ, RGB), was copied in 3 places.
* RNA_def_float etc functions still need to be update, will do this
later together with another change.
2009-08-10 21:31:05 +00:00
prop = RNA_def_property ( srna , " co " , PROP_FLOAT , PROP_XYZ ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Location " , " Sticky texture coordinate location " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-01-10 22:57:33 +00:00
}
2011-11-25 13:28:04 +00:00
static void rna_def_mcol ( BlenderRNA * brna )
2009-01-10 22:57:33 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
srna = RNA_def_struct ( brna , " MeshColorLayer " , NULL ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Vertex Color Layer " , " Layer of vertex colors in a Mesh datablock " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_struct_sdna ( srna , " CustomDataLayer " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshColorLayer_path " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_struct_ui_icon ( srna , ICON_GROUP_VCOL ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " name " , PROP_STRING , PROP_NONE ) ;
RNA_def_struct_name_property ( srna , prop ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_string_funcs ( prop , NULL , NULL , NULL ) ;
2011-05-15 17:59:48 +00:00
RNA_def_property_ui_text ( prop , " Name " , " Name of Vertex color layer " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " active " , PROP_BOOLEAN , PROP_NONE ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_boolean_funcs ( prop , " rna_MeshColorLayer_active_get " , " rna_MeshColorLayer_active_set " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Active " , " Sets the layer as active for display and editing " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " active_render " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " active_rnd " , 0 ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_boolean_funcs ( prop , " rna_MeshColorLayer_active_render_get " , " rna_MeshColorLayer_active_render_set " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Active Render " , " Sets the layer as active for rendering " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " data " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_struct_type ( prop , " MeshColor " ) ;
RNA_def_property_ui_text ( prop , " Data " , " " ) ;
2011-10-09 07:31:15 +00:00
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 " , NULL , NULL , NULL ) ;
2009-09-16 17:43:09 +00:00
srna = RNA_def_struct ( brna , " MeshColor " , NULL ) ;
RNA_def_struct_sdna ( srna , " MCol " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Vertex Color " , " Vertex colors for a face in a Mesh " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshColor_path " ) ;
2011-11-25 13:28:04 +00:00
prop = RNA_def_property ( srna , " color1 " , PROP_FLOAT , PROP_COLOR ) ;
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_range ( prop , 0.0f , 1.0f ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshColor_color1_get " , " rna_MeshColor_color1_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Color 1 " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2011-11-25 13:28:04 +00:00
prop = RNA_def_property ( srna , " color2 " , PROP_FLOAT , PROP_COLOR ) ;
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_range ( prop , 0.0f , 1.0f ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshColor_color2_get " , " rna_MeshColor_color2_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Color 2 " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " color3 " , PROP_FLOAT , PROP_COLOR ) ;
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_range ( prop , 0.0f , 1.0f ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshColor_color3_get " , " rna_MeshColor_color3_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Color 3 " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " color4 " , PROP_FLOAT , PROP_COLOR ) ;
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_range ( prop , 0.0f , 1.0f ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshColor_color4_get " , " rna_MeshColor_color4_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Color 4 " , " " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
}
static void rna_def_mloopcol ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
srna = RNA_def_struct ( brna , " MeshLoopColorLayer " , NULL ) ;
RNA_def_struct_ui_text ( srna , " Mesh Vertex Color Layer " , " Layer of vertex colors in a Mesh datablock " ) ;
RNA_def_struct_sdna ( srna , " CustomDataLayer " ) ;
RNA_def_struct_path_func ( srna , " rna_MeshLoopColorLayer_path " ) ;
RNA_def_struct_ui_icon ( srna , ICON_GROUP_VCOL ) ;
prop = RNA_def_property ( srna , " name " , PROP_STRING , PROP_NONE ) ;
RNA_def_struct_name_property ( srna , prop ) ;
RNA_def_property_string_funcs ( prop , NULL , NULL , " rna_MeshLoopColorLayer_name_set " ) ;
RNA_def_property_ui_text ( prop , " Name " , " Name of Vertex color layer " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_funcs ( prop , " rna_MeshLoopColorLayer_active_get " , " rna_MeshLoopColorLayer_active_set " ) ;
RNA_def_property_ui_text ( prop , " Active " , " Sets the layer as active for display and editing " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active_render " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " active_rnd " , 0 ) ;
RNA_def_property_boolean_funcs ( prop , " rna_MeshLoopColorLayer_active_render_get " , " rna_MeshLoopColorLayer_active_render_set " ) ;
RNA_def_property_ui_text ( prop , " Active Render " , " Sets the layer as active for rendering " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " data " , PROP_COLLECTION , PROP_NONE ) ;
2012-01-17 05:15:33 +00:00
RNA_def_property_struct_type ( prop , " MeshLoopColor " ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_ui_text ( prop , " Data " , " " ) ;
RNA_def_property_collection_funcs ( prop , " rna_MeshLoopColorLayer_data_begin " , " rna_iterator_array_next " , " rna_iterator_array_end " , " rna_iterator_array_get " , " rna_MeshLoopColorLayer_data_length " , NULL , NULL , NULL ) ;
2012-01-17 05:15:33 +00:00
srna = RNA_def_struct ( brna , " MeshLoopColor " , NULL ) ;
RNA_def_struct_sdna ( srna , " MLoopCol " ) ;
RNA_def_struct_ui_text ( srna , " Mesh Vertex Color " , " Vertex loop colors in a Mesh " ) ;
2011-11-25 13:28:04 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshColor_path " ) ;
2012-01-17 05:15:33 +00:00
prop = RNA_def_property ( srna , " color " , PROP_FLOAT , PROP_COLOR ) ;
RNA_def_property_array ( prop , 3 ) ;
RNA_def_property_range ( prop , 0.0f , 1.0f ) ;
RNA_def_property_float_funcs ( prop , " rna_MeshLoopColor_color_get " , " rna_MeshLoopColor_color_set " , NULL ) ;
RNA_def_property_ui_text ( prop , " Color " , " " ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-01-10 22:57:33 +00:00
}
2008-11-24 12:12:24 +00:00
2009-01-10 22:57:33 +00:00
static void rna_def_mproperties ( BlenderRNA * brna )
{
StructRNA * srna ;
PropertyRNA * prop ;
/* Float */
srna = RNA_def_struct ( brna , " MeshFloatPropertyLayer " , NULL ) ;
2008-11-24 12:12:24 +00:00
RNA_def_struct_sdna ( srna , " CustomDataLayer " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Float Property Layer " , " User defined layer of floating pointer number values " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshFloatPropertyLayer_path " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " name " , PROP_STRING , PROP_NONE ) ;
RNA_def_struct_name_property ( srna , prop ) ;
RNA_def_property_ui_text ( prop , " Name " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " data " , PROP_COLLECTION , PROP_NONE ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_struct_type ( prop , " MeshFloatProperty " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Data " , " " ) ;
2011-10-09 07:31:15 +00:00
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 " , NULL , NULL , NULL ) ;
2008-11-24 12:12:24 +00:00
2009-01-10 22:57:33 +00:00
srna = RNA_def_struct ( brna , " MeshFloatProperty " , NULL ) ;
RNA_def_struct_sdna ( srna , " MFloatProperty " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Float Property " , " User defined floating point number value in a float properties layer " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshFloatProperty_path " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " value " , PROP_FLOAT , PROP_NONE ) ;
RNA_def_property_float_sdna ( prop , NULL , " f " ) ;
RNA_def_property_ui_text ( prop , " Value " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
2009-01-10 22:57:33 +00:00
/* Int */
srna = RNA_def_struct ( brna , " MeshIntPropertyLayer " , NULL ) ;
2008-11-24 12:12:24 +00:00
RNA_def_struct_sdna ( srna , " CustomDataLayer " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Int Property Layer " , " User defined layer of integer number values " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshIntPropertyLayer_path " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " name " , PROP_STRING , PROP_NONE ) ;
RNA_def_struct_name_property ( srna , prop ) ;
RNA_def_property_ui_text ( prop , " Name " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " data " , PROP_COLLECTION , PROP_NONE ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_struct_type ( prop , " MeshIntProperty " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Data " , " " ) ;
2011-10-09 07:31:15 +00:00
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 " , NULL , NULL , NULL ) ;
2008-11-24 12:12:24 +00:00
2009-01-10 22:57:33 +00:00
srna = RNA_def_struct ( brna , " MeshIntProperty " , NULL ) ;
RNA_def_struct_sdna ( srna , " MIntProperty " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Int Property " , " User defined integer number value in an integer properties layer " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshIntProperty_path " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " value " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " i " ) ;
RNA_def_property_ui_text ( prop , " Value " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
2009-01-10 22:57:33 +00:00
/* String */
srna = RNA_def_struct ( brna , " MeshStringPropertyLayer " , NULL ) ;
2008-11-24 12:12:24 +00:00
RNA_def_struct_sdna ( srna , " CustomDataLayer " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh String Property Layer " , " User defined layer of string text values " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshStringPropertyLayer_path " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " name " , PROP_STRING , PROP_NONE ) ;
RNA_def_struct_name_property ( srna , prop ) ;
RNA_def_property_ui_text ( prop , " Name " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " data " , PROP_COLLECTION , PROP_NONE ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_struct_type ( prop , " MeshStringProperty " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Data " , " " ) ;
2011-10-09 07:31:15 +00:00
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 " , NULL , NULL , NULL ) ;
2008-11-24 12:12:24 +00:00
2009-01-10 22:57:33 +00:00
srna = RNA_def_struct ( brna , " MeshStringProperty " , NULL ) ;
RNA_def_struct_sdna ( srna , " MStringProperty " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh String Property " , " User defined string text value in a string properties layer " ) ;
2009-03-25 20:29:01 +00:00
RNA_def_struct_path_func ( srna , " rna_MeshStringProperty_path " ) ;
2008-11-24 12:12:24 +00:00
2011-11-15 14:01:24 +00:00
/* low level mesh data access, treat as bytes */
prop = RNA_def_property ( srna , " value " , PROP_STRING , PROP_BYTESTRING ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_string_sdna ( prop , NULL , " s " ) ;
RNA_def_property_ui_text ( prop , " Value " , " " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
}
2008-12-02 23:45:11 +00:00
void rna_def_texmat_common ( StructRNA * srna , const char * texspace_editable )
{
PropertyRNA * prop ;
/* texture space */
prop = RNA_def_property ( srna , " auto_texspace " , PROP_BOOLEAN , PROP_NONE ) ;
2012-02-19 22:17:30 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " texflag " , ME_AUTOSPACE ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Auto Texture Space " , " Adjusts active object's texture space automatically when transforming object " ) ;
2008-12-02 23:45:11 +00:00
2011-11-18 16:06:20 +00:00
prop = RNA_def_property ( srna , " texspace_location " , PROP_FLOAT , PROP_TRANSLATION ) ;
2008-12-02 23:45:11 +00:00
RNA_def_property_float_sdna ( prop , NULL , " loc " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Texure Space Location " , " Texture space location " ) ;
2009-01-01 15:52:51 +00:00
RNA_def_property_editable_func ( prop , texspace_editable ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2008-12-02 23:45:11 +00:00
RNA: subtypes and units
* Reviewed subtypes, making them more specific and adding new ones.
* Subtypes now have an associated type of units (length, area, volume,
mass, rotation, time, velocity, acceleration). These are not used
yet anywhere.
* Centralized code that decides the name of array items based on
subtype (XYZ, RGB), was copied in 3 places.
* RNA_def_float etc functions still need to be update, will do this
later together with another change.
2009-08-10 21:31:05 +00:00
prop = RNA_def_property ( srna , " texspace_size " , PROP_FLOAT , PROP_XYZ ) ;
2008-12-02 23:45:11 +00:00
RNA_def_property_float_sdna ( prop , NULL , " size " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Texture Space Size " , " Texture space size " ) ;
2009-01-01 15:52:51 +00:00
RNA_def_property_editable_func ( prop , texspace_editable ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2008-12-02 23:45:11 +00:00
/* not supported yet
RNA: subtypes and units
* Reviewed subtypes, making them more specific and adding new ones.
* Subtypes now have an associated type of units (length, area, volume,
mass, rotation, time, velocity, acceleration). These are not used
yet anywhere.
* Centralized code that decides the name of array items based on
subtype (XYZ, RGB), was copied in 3 places.
* RNA_def_float etc functions still need to be update, will do this
later together with another change.
2009-08-10 21:31:05 +00:00
prop = RNA_def_property ( srna , " texspace_rot " , PROP_FLOAT , PROP_EULER ) ;
2008-12-02 23:45:11 +00:00
RNA_def_property_float ( prop , NULL , " rot " ) ;
RNA_def_property_ui_text ( prop , " Texture Space Rotation " , " Texture space rotation " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_editable_func ( prop , texspace_editable ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ; */
2008-12-02 23:45:11 +00:00
/* materials */
prop = RNA_def_property ( srna , " materials " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " mat " , " totcol " ) ;
RNA_def_property_struct_type ( prop , " Material " ) ;
RNA_def_property_ui_text ( prop , " Materials " , " " ) ;
2011-08-26 14:36:30 +00:00
RNA_def_property_srna ( prop , " IDMaterials " ) ; /* see rna_ID.c */
2011-10-09 07:31:15 +00:00
RNA_def_property_collection_funcs ( prop , 0 , NULL , NULL , NULL , NULL , NULL , NULL , " rna_IDMaterials_assign_int " ) ;
2008-12-02 23:45:11 +00:00
}
2009-12-13 14:13:25 +00:00
/* scene.objects */
2010-09-07 05:47:34 +00:00
/* mesh.vertices */
static void rna_def_mesh_vertices ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
// PropertyRNA *prop;
FunctionRNA * func ;
2011-01-13 04:53:55 +00:00
// PropertyRNA *parm;
2010-09-07 05:47:34 +00:00
RNA_def_property_srna ( cprop , " MeshVertices " ) ;
srna = RNA_def_struct ( brna , " MeshVertices " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " Mesh Vertices " , " Collection of mesh vertices " ) ;
func = RNA_def_function ( srna , " add " , " ED_mesh_vertices_add " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
2011-09-23 13:31:48 +00:00
RNA_def_int ( func , " count " , 0 , 0 , INT_MAX , " Count " , " Number of vertices to add " , 0 , INT_MAX ) ;
2012-01-23 13:29:29 +00:00
#if 0 // Remove until BMesh merge
2012-01-20 02:10:09 +00:00
func = RNA_def_function ( srna , " remove " , " ED_mesh_vertices_remove " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
RNA_def_int ( func , " count " , 0 , 0 , INT_MAX , " Count " , " Number of vertices to remove " , 0 , INT_MAX ) ;
2012-01-23 13:29:29 +00:00
# endif
2010-09-07 05:47:34 +00:00
}
/* mesh.edges */
static void rna_def_mesh_edges ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
// PropertyRNA *prop;
FunctionRNA * func ;
2011-05-12 09:02:39 +00:00
// PropertyRNA *parm;
2010-09-07 05:47:34 +00:00
RNA_def_property_srna ( cprop , " MeshEdges " ) ;
srna = RNA_def_struct ( brna , " MeshEdges " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " Mesh Edges " , " Collection of mesh edges " ) ;
func = RNA_def_function ( srna , " add " , " ED_mesh_edges_add " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
2012-01-20 02:10:09 +00:00
RNA_def_int ( func , " count " , 0 , 0 , INT_MAX , " Count " , " Number of edges to add " , 0 , INT_MAX ) ;
2012-01-23 13:29:29 +00:00
#if 0 // Remove until BMesh merge
2012-01-20 02:10:09 +00:00
func = RNA_def_function ( srna , " remove " , " ED_mesh_edges_remove " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
RNA_def_int ( func , " count " , 0 , 0 , INT_MAX , " Count " , " Number of edges to remove " , 0 , INT_MAX ) ;
2012-01-23 13:29:29 +00:00
# endif
2010-09-07 05:47:34 +00:00
}
/* mesh.faces */
2009-12-13 14:13:25 +00:00
static void rna_def_mesh_faces ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
PropertyRNA * prop ;
2010-09-07 05:47:34 +00:00
FunctionRNA * func ;
2012-02-02 00:04:47 +00:00
// PropertyRNA *parm;
2009-12-13 14:13:25 +00:00
RNA_def_property_srna ( cprop , " MeshFaces " ) ;
srna = RNA_def_struct ( brna , " MeshFaces " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_struct_ui_text ( srna , " Mesh Faces " , " Collection of mesh faces " ) ;
2009-12-13 14:13:25 +00:00
prop = RNA_def_property ( srna , " active " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " act_face " ) ;
RNA_def_property_ui_text ( prop , " Active Face " , " The active face for this mesh " ) ;
2010-04-12 03:06:49 +00:00
2010-09-07 05:47:34 +00:00
func = RNA_def_function ( srna , " add " , " ED_mesh_faces_add " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
2012-01-20 02:10:09 +00:00
RNA_def_int ( func , " count " , 0 , 0 , INT_MAX , " Count " , " Number of faces to add " , 0 , INT_MAX ) ;
2012-01-23 13:29:29 +00:00
#if 0 // Remove until BMesh merge
2012-01-20 02:10:09 +00:00
func = RNA_def_function ( srna , " remove " , " ED_mesh_faces_remove " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
RNA_def_int ( func , " count " , 0 , 0 , INT_MAX , " Count " , " Number of faces to remove " , 0 , INT_MAX ) ;
2012-01-23 13:29:29 +00:00
# endif
2009-12-13 14:13:25 +00:00
}
2011-08-31 11:21:54 +00:00
/* mesh.loops */
static void rna_def_mesh_loops ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
2011-09-26 05:35:57 +00:00
/*PropertyRNA *prop;*/
2011-08-31 11:21:54 +00:00
FunctionRNA * func ;
2011-09-26 05:35:57 +00:00
/*PropertyRNA *parm;*/
2011-08-31 11:21:54 +00:00
RNA_def_property_srna ( cprop , " MeshLoops " ) ;
srna = RNA_def_struct ( brna , " MeshLoops " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " Mesh Loops " , " Collection of mesh loops " ) ;
#if 0 // BMESH_TODO
prop = RNA_def_property ( srna , " active " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " act_face " ) ;
RNA_def_property_ui_text ( prop , " Active Polygon " , " The active polygon for this mesh " ) ;
2011-09-01 09:11:00 +00:00
# endif
2011-08-31 11:21:54 +00:00
2011-09-01 09:11:00 +00:00
func = RNA_def_function ( srna , " add " , " ED_mesh_loops_add " ) ;
2011-08-31 11:21:54 +00:00
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
2011-09-23 13:31:48 +00:00
RNA_def_int ( func , " count " , 0 , 0 , INT_MAX , " Count " , " Number of loops to add " , 0 , INT_MAX ) ;
2011-08-31 11:21:54 +00:00
}
/* mesh.polygons */
2011-08-31 05:13:21 +00:00
static void rna_def_mesh_polygons ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
2011-11-17 05:03:07 +00:00
PropertyRNA * prop ;
2011-08-31 05:13:21 +00:00
FunctionRNA * func ;
2012-02-20 00:18:35 +00:00
//PropertyRNA *parm;
2011-08-31 05:13:21 +00:00
RNA_def_property_srna ( cprop , " MeshPolygons " ) ;
srna = RNA_def_struct ( brna , " MeshPolygons " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " Mesh Polygons " , " Collection of mesh polygons " ) ;
prop = RNA_def_property ( srna , " active " , PROP_INT , PROP_NONE ) ;
RNA_def_property_int_sdna ( prop , NULL , " act_face " ) ;
RNA_def_property_ui_text ( prop , " Active Polygon " , " The active polygon for this mesh " ) ;
func = RNA_def_function ( srna , " add " , " ED_mesh_polys_add " ) ;
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
2012-02-20 00:18:35 +00:00
RNA_def_int ( func , " count " , 0 , 0 , INT_MAX , " Count " , " Number of polygons to add " , 0 , INT_MAX ) ;
2011-08-31 05:13:21 +00:00
}
2010-09-07 05:47:34 +00:00
/* mesh.vertex_colors */
2011-11-25 13:28:04 +00:00
static void rna_def_tessface_vertex_colors ( BlenderRNA * brna , PropertyRNA * cprop )
2010-09-07 05:47:34 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
2011-11-25 13:28:04 +00:00
//FunctionRNA *func;
//PropertyRNA *parm;
2010-09-07 05:47:34 +00:00
RNA_def_property_srna ( cprop , " VertexColors " ) ;
srna = RNA_def_struct ( brna , " VertexColors " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " Vertex Colors " , " Collection of vertex colors " ) ;
2011-11-25 13:28:04 +00:00
prop = RNA_def_property ( srna , " active " , PROP_POINTER , PROP_UNSIGNED ) ;
RNA_def_property_struct_type ( prop , " MeshColorLayer " ) ;
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_tessface_vertex_color_active_get " , " rna_Mesh_tessface_vertex_color_active_set " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " Active Vertex Color Layer " , " Active vertex color layer " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active_index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_funcs ( prop , " rna_Mesh_tessface_vertex_color_active_index_get " , " rna_Mesh_tessface_vertex_color_active_index_set " , " rna_Mesh_vertex_color_index_range " ) ;
RNA_def_property_ui_text ( prop , " Active Vertex Color Index " , " Active vertex color index " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
}
static void rna_def_loop_colors ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
PropertyRNA * prop ;
FunctionRNA * func ;
PropertyRNA * parm ;
RNA_def_property_srna ( cprop , " LoopColors " ) ;
srna = RNA_def_struct ( brna , " LoopColors " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " Loop Colors " , " Collection of vertex colors " ) ;
2010-09-07 05:47:34 +00:00
func = RNA_def_function ( srna , " new " , " rna_Mesh_vertex_color_new " ) ;
RNA_def_function_flag ( func , FUNC_USE_CONTEXT ) ;
2011-09-19 13:23:58 +00:00
RNA_def_function_ui_description ( func , " Add a vertex color layer to Mesh " ) ;
RNA_def_string ( func , " name " , " Col " , 0 , " " , " Vertex color name " ) ;
2011-11-25 13:28:04 +00:00
parm = RNA_def_pointer ( func , " layer " , " MeshLoopColorLayer " , " " , " The newly created layer " ) ;
2012-02-01 18:25:13 +00:00
RNA_def_property_flag ( parm , PROP_RNAPTR ) ;
2010-09-07 05:47:34 +00:00
RNA_def_function_return ( func , parm ) ;
/*
func = RNA_def_function ( srna , " remove " , " rna_Mesh_vertex_color_remove " ) ;
2011-09-19 13:23:58 +00:00
RNA_def_function_ui_description ( func , " Remove a vertex color layer " ) ;
2010-09-07 05:47:34 +00:00
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
2011-09-19 13:23:58 +00:00
parm = RNA_def_pointer ( func , " layer " , " Layer " , " " , " The layer to remove " ) ;
2010-09-07 05:47:34 +00:00
RNA_def_property_flag ( parm , PROP_REQUIRED | PROP_NEVER_NULL ) ;
*/
prop = RNA_def_property ( srna , " active " , PROP_POINTER , PROP_UNSIGNED ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_struct_type ( prop , " MeshLoopColorLayer " ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_vertex_color_active_get " , " rna_Mesh_vertex_color_active_set " , NULL , NULL ) ;
2010-09-07 05:47:34 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_ui_text ( prop , " Active Vertex Color Layer " , " Active vertex color layer " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active_index " , PROP_INT , PROP_UNSIGNED ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_int_funcs ( prop , " rna_Mesh_vertex_color_active_index_get " , " rna_Mesh_vertex_color_active_index_set " , " rna_Mesh_vertex_color_index_range " ) ;
2010-09-07 05:47:34 +00:00
RNA_def_property_ui_text ( prop , " Active Vertex Color Index " , " Active vertex color index " ) ;
2010-04-12 03:06:49 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2009-12-13 14:13:25 +00:00
}
2011-11-17 05:03:07 +00:00
static void rna_def_uv_loop_layers ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
PropertyRNA * prop ;
//FunctionRNA *func;
//PropertyRNA *parm;
RNA_def_property_srna ( cprop , " UVLoopLayers " ) ;
srna = RNA_def_struct ( brna , " UVLoopLayers " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " UV Loop Layers " , " Collection of uv loop layers " ) ;
prop = RNA_def_property ( srna , " active " , PROP_POINTER , PROP_UNSIGNED ) ;
RNA_def_property_struct_type ( prop , " MeshUVLoopLayer " ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_uv_loop_layer_active_get " , " rna_Mesh_uv_loop_layer_active_set " , NULL , NULL ) ;
2011-11-17 05:03:07 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_ui_text ( prop , " Active UV loop layer " , " Active UV loop layer " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active_index " , PROP_INT , PROP_UNSIGNED ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_int_funcs ( prop , " rna_Mesh_uv_loop_layer_active_index_get " , " rna_Mesh_uv_loop_layer_active_index_set " , " rna_Mesh_uv_loop_layer_index_range " ) ;
2011-11-17 05:03:07 +00:00
RNA_def_property_ui_text ( prop , " Active UV loop layer Index " , " Active UV loop layer index " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
}
2011-11-15 12:28:13 +00:00
/* mesh int layers */
static void rna_def_int_layers ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
FunctionRNA * func ;
PropertyRNA * parm ;
RNA_def_property_srna ( cprop , " IntProperties " ) ;
srna = RNA_def_struct ( brna , " IntProperties " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " Int Properties " , " Collection of int properties " ) ;
func = RNA_def_function ( srna , " new " , " rna_Mesh_int_property_new " ) ;
RNA_def_function_flag ( func , FUNC_USE_CONTEXT ) ;
RNA_def_function_ui_description ( func , " Add a integer property layer to Mesh " ) ;
RNA_def_string ( func , " name " , " Int Prop " , 0 , " " , " Int property name " ) ;
parm = RNA_def_pointer ( func , " layer " , " MeshIntPropertyLayer " , " " , " The newly created layer " ) ;
2012-02-01 18:25:13 +00:00
RNA_def_property_flag ( parm , PROP_RNAPTR ) ;
2011-11-15 12:28:13 +00:00
RNA_def_function_return ( func , parm ) ;
}
/* mesh float layers */
static void rna_def_float_layers ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
FunctionRNA * func ;
PropertyRNA * parm ;
RNA_def_property_srna ( cprop , " FloatProperties " ) ;
srna = RNA_def_struct ( brna , " FloatProperties " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " Float Properties " , " Collection of float properties " ) ;
func = RNA_def_function ( srna , " new " , " rna_Mesh_float_property_new " ) ;
RNA_def_function_flag ( func , FUNC_USE_CONTEXT ) ;
RNA_def_function_ui_description ( func , " Add a float property layer to Mesh " ) ;
RNA_def_string ( func , " name " , " Float Prop " , 0 , " " , " Float property name " ) ;
parm = RNA_def_pointer ( func , " layer " , " MeshFloatPropertyLayer " , " " , " The newly created layer " ) ;
2012-02-01 18:25:13 +00:00
RNA_def_property_flag ( parm , PROP_RNAPTR ) ;
2011-11-15 12:28:13 +00:00
RNA_def_function_return ( func , parm ) ;
}
/* mesh string layers */
static void rna_def_string_layers ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
FunctionRNA * func ;
PropertyRNA * parm ;
RNA_def_property_srna ( cprop , " StringProperties " ) ;
srna = RNA_def_struct ( brna , " StringProperties " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " String Properties " , " Collection of string properties " ) ;
func = RNA_def_function ( srna , " new " , " rna_Mesh_string_property_new " ) ;
RNA_def_function_flag ( func , FUNC_USE_CONTEXT ) ;
RNA_def_function_ui_description ( func , " Add a string property layer to Mesh " ) ;
RNA_def_string ( func , " name " , " String Prop " , 0 , " " , " String property name " ) ;
parm = RNA_def_pointer ( func , " layer " , " MeshStringPropertyLayer " , " " , " The newly created layer " ) ;
2012-02-01 18:25:13 +00:00
RNA_def_property_flag ( parm , PROP_RNAPTR ) ;
2011-11-15 12:28:13 +00:00
RNA_def_function_return ( func , parm ) ;
}
2010-09-07 05:47:34 +00:00
/* mesh.uv_layers */
2011-11-25 13:28:04 +00:00
static void rna_def_tessface_uv_textures ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
PropertyRNA * prop ;
//FunctionRNA *func;
//PropertyRNA *parm;
RNA_def_property_srna ( cprop , " TessfaceUVTextures " ) ;
srna = RNA_def_struct ( brna , " TessfaceUVTextures " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
RNA_def_struct_ui_text ( srna , " UV Maps " , " Collection of UV maps for tesselated faces " ) ;
prop = RNA_def_property ( srna , " active " , PROP_POINTER , PROP_UNSIGNED ) ;
RNA_def_property_struct_type ( prop , " MeshTextureFaceLayer " ) ;
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_tessface_uv_texture_active_get " , " rna_Mesh_tessface_uv_texture_active_set " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " Active UV Map " , " Active UV Map " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active_index " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_funcs ( prop , " rna_Mesh_tessface_uv_texture_active_index_get " , " rna_Mesh_tessface_uv_texture_active_index_set " , " rna_Mesh_uv_texture_index_range " ) ;
RNA_def_property_ui_text ( prop , " Active UV Map Index " , " Active UV Map index " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
}
2010-09-07 05:47:34 +00:00
static void rna_def_uv_textures ( BlenderRNA * brna , PropertyRNA * cprop )
{
StructRNA * srna ;
PropertyRNA * prop ;
FunctionRNA * func ;
PropertyRNA * parm ;
RNA_def_property_srna ( cprop , " UVTextures " ) ;
srna = RNA_def_struct ( brna , " UVTextures " , NULL ) ;
RNA_def_struct_sdna ( srna , " Mesh " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_struct_ui_text ( srna , " UV Maps " , " Collection of UV maps " ) ;
2010-09-07 05:47:34 +00:00
func = RNA_def_function ( srna , " new " , " rna_Mesh_uv_texture_new " ) ;
RNA_def_function_flag ( func , FUNC_USE_CONTEXT ) ;
2011-11-25 13:28:04 +00:00
RNA_def_function_ui_description ( func , " Add a UV map layer to Mesh " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_string ( func , " name " , " UVMap " , 0 , " " , " UV map name " ) ;
2012-01-17 05:46:34 +00:00
parm = RNA_def_pointer ( func , " layer " , " MeshTexturePolyLayer " , " " , " The newly created layer " ) ;
2012-02-01 18:25:13 +00:00
RNA_def_property_flag ( parm , PROP_RNAPTR ) ;
2010-09-07 05:47:34 +00:00
RNA_def_function_return ( func , parm ) ;
/*
func = RNA_def_function ( srna , " remove " , " rna_Mesh_uv_layers_remove " ) ;
2011-09-19 13:23:58 +00:00
RNA_def_function_ui_description ( func , " Remove a vertex color layer " ) ;
2010-09-07 05:47:34 +00:00
RNA_def_function_flag ( func , FUNC_USE_REPORTS ) ;
2011-09-19 13:23:58 +00:00
parm = RNA_def_pointer ( func , " layer " , " Layer " , " " , " The layer to remove " ) ;
2010-09-07 05:47:34 +00:00
RNA_def_property_flag ( parm , PROP_REQUIRED | PROP_NEVER_NULL ) ;
*/
prop = RNA_def_property ( srna , " active " , PROP_POINTER , PROP_UNSIGNED ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_struct_type ( prop , " MeshTexturePolyLayer " ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_uv_texture_active_get " , " rna_Mesh_uv_texture_active_set " , NULL , NULL ) ;
2010-09-07 05:47:34 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Active UV Map " , " Active UV Map " ) ;
2010-09-07 05:47:34 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
prop = RNA_def_property ( srna , " active_index " , PROP_INT , PROP_UNSIGNED ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_int_funcs ( prop , " rna_Mesh_uv_texture_active_index_get " , " rna_Mesh_uv_texture_active_index_set " , " rna_Mesh_uv_texture_index_range " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Active UV Map Index " , " Active UV Map index " ) ;
2010-09-07 05:47:34 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
}
2009-12-13 14:13:25 +00:00
2008-11-24 12:12:24 +00:00
static void rna_def_mesh ( BlenderRNA * brna )
2008-11-07 02:58:25 +00:00
{
StructRNA * srna ;
PropertyRNA * prop ;
2008-12-19 04:06:24 +00:00
srna = RNA_def_struct ( brna , " Mesh " , " ID " ) ;
2010-02-21 20:27:13 +00:00
RNA_def_struct_ui_text ( srna , " Mesh " , " Mesh datablock defining geometric surfaces " ) ;
2009-06-03 23:16:51 +00:00
RNA_def_struct_ui_icon ( srna , ICON_MESH_DATA ) ;
2008-11-07 02:58:25 +00:00
2010-08-18 03:42:26 +00:00
prop = RNA_def_property ( srna , " vertices " , PROP_COLLECTION , PROP_NONE ) ;
2008-11-07 02:58:25 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " mvert " , " totvert " ) ;
2009-01-02 14:48:03 +00:00
RNA_def_property_struct_type ( prop , " MeshVertex " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Vertices " , " Vertices of the mesh " ) ;
2010-09-07 05:47:34 +00:00
rna_def_mesh_vertices ( brna , prop ) ;
2008-11-07 02:58:25 +00:00
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " edges " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " medge " , " totedge " ) ;
2009-01-02 14:48:03 +00:00
RNA_def_property_struct_type ( prop , " MeshEdge " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Edges " , " Edges of the mesh " ) ;
2010-09-07 05:47:34 +00:00
rna_def_mesh_edges ( brna , prop ) ;
2008-11-07 02:58:25 +00:00
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " faces " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " mface " , " totface " ) ;
2009-01-02 14:48:03 +00:00
RNA_def_property_struct_type ( prop , " MeshFace " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Faces " , " Faces of the mesh " ) ;
2009-12-13 14:13:25 +00:00
rna_def_mesh_faces ( brna , prop ) ;
2008-11-24 12:12:24 +00:00
2011-08-31 11:21:54 +00:00
prop = RNA_def_property ( srna , " loops " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " mloop " , " totloop " ) ;
RNA_def_property_struct_type ( prop , " MeshLoop " ) ;
RNA_def_property_ui_text ( prop , " Loops " , " Loops of the mesh " ) ;
rna_def_mesh_loops ( brna , prop ) ;
2011-08-31 05:13:21 +00:00
prop = RNA_def_property ( srna , " polygons " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " mpoly " , " totpoly " ) ;
RNA_def_property_struct_type ( prop , " MeshPolygon " ) ;
RNA_def_property_ui_text ( prop , " Polygons " , " Polygons of the mesh " ) ;
rna_def_mesh_polygons ( brna , prop ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " sticky " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " msticky " , " totvert " ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_struct_type ( prop , " MeshSticky " ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Sticky " , " Sticky texture coordinates " ) ;
2008-11-24 12:12:24 +00:00
2009-10-22 23:22:05 +00:00
/* TODO, should this be allowed to be its self? */
prop = RNA_def_property ( srna , " texture_mesh " , PROP_POINTER , PROP_NONE ) ;
RNA_def_property_pointer_sdna ( prop , NULL , " texcomesh " ) ;
RNA_def_property_flag ( prop , PROP_EDITABLE | PROP_ID_SELF_CHECK ) ;
2010-02-10 21:15:44 +00:00
RNA_def_property_ui_text ( prop , " Texture Mesh " , " Use another mesh for texture indicies (vertex indicies must be aligned) " ) ;
2009-06-27 01:10:39 +00:00
2011-11-17 05:03:07 +00:00
/* UV loop layers */
prop = RNA_def_property ( srna , " uv_loop_layers " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " ldata.layers " , " ldata.totlayer " ) ;
RNA_def_property_collection_funcs ( prop , " rna_Mesh_uv_loop_layers_begin " , NULL , NULL , NULL ,
" rna_Mesh_uv_loop_layers_length " , NULL , NULL , NULL ) ;
RNA_def_property_struct_type ( prop , " MeshUVLoopLayer " ) ;
RNA_def_property_ui_text ( prop , " UV Loop Layers " , " All UV loop layers " ) ;
rna_def_uv_loop_layers ( brna , prop ) ;
prop = RNA_def_property ( srna , " uv_loop_layer_clone " , PROP_POINTER , PROP_UNSIGNED ) ;
RNA_def_property_struct_type ( prop , " MeshUVLoopLayer " ) ;
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_uv_loop_layer_clone_get " , " rna_Mesh_uv_loop_layer_clone_set " , NULL , NULL ) ;
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_ui_text ( prop , " Clone UV loop layer " , " UV loop layer to be used as cloning source " ) ;
prop = RNA_def_property ( srna , " uv_loop_layer_clone_index " , PROP_INT , PROP_UNSIGNED ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_int_funcs ( prop , " rna_Mesh_uv_loop_layer_clone_index_get " , " rna_Mesh_uv_loop_layer_clone_index_set " , " rna_Mesh_uv_loop_layer_index_range " ) ;
2011-11-17 05:03:07 +00:00
RNA_def_property_ui_text ( prop , " Clone UV loop layer Index " , " Clone UV loop layer index " ) ;
prop = RNA_def_property ( srna , " uv_loop_layer_stencil " , PROP_POINTER , PROP_UNSIGNED ) ;
RNA_def_property_struct_type ( prop , " MeshUVLoopLayer " ) ;
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_uv_loop_layer_stencil_get " , " rna_Mesh_uv_loop_layer_stencil_set " , NULL , NULL ) ;
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
RNA_def_property_ui_text ( prop , " Mask UV loop layer " , " UV loop layer to mask the painted area " ) ;
prop = RNA_def_property ( srna , " uv_loop_layer_stencil_index " , PROP_INT , PROP_UNSIGNED ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_int_funcs ( prop , " rna_Mesh_uv_loop_layer_stencil_index_get " , " rna_Mesh_uv_loop_layer_stencil_index_set " , " rna_Mesh_uv_loop_layer_index_range " ) ;
2011-11-17 05:03:07 +00:00
RNA_def_property_ui_text ( prop , " Mask UV loop layer Index " , " Mask UV loop layer index " ) ;
2011-11-25 13:28:04 +00:00
/* Tesselated face UV maps - used by renderers */
prop = RNA_def_property ( srna , " tessface_uv_textures " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " fdata.layers " , " fdata.totlayer " ) ;
RNA_def_property_collection_funcs ( prop , " rna_Mesh_tessface_uv_textures_begin " , NULL , NULL , NULL ,
" rna_Mesh_tessface_uv_textures_length " , NULL , NULL , NULL ) ;
RNA_def_property_struct_type ( prop , " MeshTextureFaceLayer " ) ;
RNA_def_property_ui_text ( prop , " Tesselated Face UV Maps " , " All UV maps for tesselated faces (read-only, for use by renderers) " ) ;
rna_def_tessface_uv_textures ( brna , prop ) ;
/* UV maps */
2009-07-01 22:25:49 +00:00
prop = RNA_def_property ( srna , " uv_textures " , PROP_COLLECTION , PROP_NONE ) ;
2009-07-16 09:17:27 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " pdata.layers " , " pdata.totlayer " ) ;
2011-10-20 07:56:04 +00:00
RNA_def_property_collection_funcs ( prop , " rna_Mesh_uv_textures_begin " , NULL , NULL , NULL ,
" rna_Mesh_uv_textures_length " , NULL , NULL , NULL ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_struct_type ( prop , " MeshTexturePolyLayer " ) ;
RNA_def_property_ui_text ( prop , " UV Maps " , " All UV maps " ) ;
2010-09-07 05:47:34 +00:00
rna_def_uv_textures ( brna , prop ) ;
2008-11-24 12:12:24 +00:00
2009-12-22 10:48:13 +00:00
prop = RNA_def_property ( srna , " uv_texture_clone " , PROP_POINTER , PROP_UNSIGNED ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_struct_type ( prop , " MeshTexturePolyLayer " ) ;
2010-08-03 05:14:59 +00:00
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_uv_texture_clone_get " , " rna_Mesh_uv_texture_clone_set " , NULL , NULL ) ;
2009-11-24 00:56:52 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Clone UV Map " , " UV map to be used as cloning source " ) ;
2009-11-24 00:56:52 +00:00
2009-12-22 10:48:13 +00:00
prop = RNA_def_property ( srna , " uv_texture_clone_index " , PROP_INT , PROP_UNSIGNED ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_int_funcs ( prop , " rna_Mesh_uv_texture_clone_index_get " , " rna_Mesh_uv_texture_clone_index_set " , " rna_Mesh_uv_texture_index_range " ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_ui_text ( prop , " Clone UV Map Index " , " Clone UV map index " ) ;
2009-12-22 10:48:13 +00:00
prop = RNA_def_property ( srna , " uv_texture_stencil " , PROP_POINTER , PROP_UNSIGNED ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_struct_type ( prop , " MeshTexturePolyLayer " ) ;
2010-08-03 05:14:59 +00:00
RNA_def_property_pointer_funcs ( prop , " rna_Mesh_uv_texture_stencil_get " , " rna_Mesh_uv_texture_stencil_set " , NULL , NULL ) ;
2009-12-22 10:48:13 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Mask UV Map " , " UV map to mask the painted area " ) ;
2009-12-22 10:48:13 +00:00
prop = RNA_def_property ( srna , " uv_texture_stencil_index " , PROP_INT , PROP_UNSIGNED ) ;
2011-11-24 06:55:53 +00:00
RNA_def_property_int_funcs ( prop , " rna_Mesh_uv_texture_stencil_index_get " , " rna_Mesh_uv_texture_stencil_index_set " , " rna_Mesh_uv_texture_index_range " ) ;
2011-11-23 17:25:25 +00:00
RNA_def_property_ui_text ( prop , " Mask UV Map Index " , " Mask UV map index " ) ;
2009-11-24 00:56:52 +00:00
2011-11-25 13:28:04 +00:00
/* Tesselated face colors - used by renderers */
prop = RNA_def_property ( srna , " tessface_vertex_colors " , PROP_COLLECTION , PROP_NONE ) ;
RNA_def_property_collection_sdna ( prop , NULL , " fdata.layers " , " fdata.totlayer " ) ;
RNA_def_property_collection_funcs ( prop , " rna_Mesh_tessface_vertex_colors_begin " , NULL , NULL , NULL ,
" rna_Mesh_tessface_vertex_colors_length " , NULL , NULL , NULL ) ;
RNA_def_property_struct_type ( prop , " MeshColorLayer " ) ;
RNA_def_property_ui_text ( prop , " Tesselated Face Colors " , " All tesselated face colors (read-only, for use by renderers) " ) ;
rna_def_tessface_vertex_colors ( brna , prop ) ;
2009-07-01 22:25:49 +00:00
/* Vertex colors */
2009-06-27 01:10:39 +00:00
2009-07-01 22:25:49 +00:00
prop = RNA_def_property ( srna , " vertex_colors " , PROP_COLLECTION , PROP_NONE ) ;
2009-07-16 09:17:27 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " ldata.layers " , " ldata.totlayer " ) ;
2011-10-20 07:56:04 +00:00
RNA_def_property_collection_funcs ( prop , " rna_Mesh_vertex_colors_begin " , NULL , NULL , NULL ,
" rna_Mesh_vertex_colors_length " , NULL , NULL , NULL ) ;
2011-11-25 13:28:04 +00:00
RNA_def_property_struct_type ( prop , " MeshLoopColorLayer " ) ;
RNA_def_property_ui_text ( prop , " Vertex Colors " , " All vertex colors " ) ;
rna_def_loop_colors ( brna , prop ) ;
2008-11-24 12:12:24 +00:00
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " layers_float " , PROP_COLLECTION , PROP_NONE ) ;
2009-07-16 09:17:27 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " pdata.layers " , " pdata.totlayer " ) ;
2011-10-20 07:56:04 +00:00
RNA_def_property_collection_funcs ( prop , " rna_Mesh_float_layers_begin " , NULL , NULL , NULL ,
" rna_Mesh_float_layers_length " , NULL , NULL , NULL ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_struct_type ( prop , " MeshFloatPropertyLayer " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Float Property Layers " , " " ) ;
2011-11-15 12:28:13 +00:00
rna_def_float_layers ( brna , prop ) ;
2008-11-24 12:12:24 +00:00
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " layers_int " , PROP_COLLECTION , PROP_NONE ) ;
2009-07-16 09:17:27 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " pdata.layers " , " pdata.totlayer " ) ;
2011-10-20 07:56:04 +00:00
RNA_def_property_collection_funcs ( prop , " rna_Mesh_int_layers_begin " , NULL , NULL , NULL ,
" rna_Mesh_int_layers_length " , NULL , NULL , NULL ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_struct_type ( prop , " MeshIntPropertyLayer " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Int Property Layers " , " " ) ;
2011-11-15 12:28:13 +00:00
rna_def_int_layers ( brna , prop ) ;
2008-11-24 12:12:24 +00:00
2010-08-18 08:26:18 +00:00
prop = RNA_def_property ( srna , " layers_string " , PROP_COLLECTION , PROP_NONE ) ;
2009-07-16 09:17:27 +00:00
RNA_def_property_collection_sdna ( prop , NULL , " pdata.layers " , " pdata.totlayer " ) ;
2011-10-20 07:56:04 +00:00
RNA_def_property_collection_funcs ( prop , " rna_Mesh_string_layers_begin " , NULL , NULL , NULL ,
" rna_Mesh_string_layers_length " , NULL , NULL , NULL ) ;
2009-01-10 22:57:33 +00:00
RNA_def_property_struct_type ( prop , " MeshStringPropertyLayer " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " String Property Layers " , " " ) ;
2011-11-15 12:28:13 +00:00
rna_def_string_layers ( brna , prop ) ;
2008-11-24 12:12:24 +00:00
2010-08-20 06:09:58 +00:00
prop = RNA_def_property ( srna , " use_auto_smooth " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_AUTOSMOOTH ) ;
RNA_def_property_ui_text ( prop , " Auto Smooth " , " Treats all set-smoothed faces with angles less than the specified angle as 'smooth' during render " ) ;
2011-06-09 08:58:27 +00:00
# if 1 /* expose as radians */
prop = RNA_def_property ( srna , " auto_smooth_angle " , PROP_FLOAT , PROP_ANGLE ) ;
RNA_def_property_float_funcs ( prop , " rna_Mesh_auto_smooth_angle_get " , " rna_Mesh_auto_smooth_angle_set " , NULL ) ;
RNA_def_property_ui_range ( prop , DEG2RAD ( 1.0 ) , DEG2RAD ( 80 ) , 1.0 , 1 ) ;
# else
2010-08-20 06:09:58 +00:00
prop = RNA_def_property ( srna , " auto_smooth_angle " , PROP_INT , PROP_NONE ) ;
2008-12-26 02:02:06 +00:00
RNA_def_property_int_sdna ( prop , NULL , " smoothresh " ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_range ( prop , 1 , 80 ) ;
2011-06-09 08:58:27 +00:00
# endif
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Auto Smooth Angle " , " Defines maximum angle between face normals that 'Auto Smooth' will operate on " ) ;
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_double_sided " , PROP_BOOLEAN , PROP_NONE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " flag " , ME_TWOSIDED ) ;
RNA_def_property_ui_text ( prop , " Double Sided " , " Render/display the mesh with double or single sided lighting " ) ;
2009-07-01 22:25:49 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_data " ) ;
2008-11-24 12:12:24 +00:00
prop = RNA_def_property ( srna , " texco_mesh " , PROP_POINTER , PROP_NONE ) ;
RNA_def_property_pointer_sdna ( prop , NULL , " texcomesh " ) ;
2009-05-28 23:23:47 +00:00
RNA_def_property_flag ( prop , PROP_EDITABLE ) ;
2008-11-24 12:12:24 +00:00
RNA_def_property_ui_text ( prop , " Texture Space Mesh " , " Derive texture coordinates from another mesh " ) ;
2009-01-10 22:57:33 +00:00
prop = RNA_def_property ( srna , " shape_keys " , PROP_POINTER , PROP_NONE ) ;
RNA_def_property_pointer_sdna ( prop , NULL , " key " ) ;
2008-12-04 00:07:47 +00:00
RNA_def_property_ui_text ( prop , " Shape Keys " , " " ) ;
2009-08-06 23:34:14 +00:00
2010-04-12 05:04:49 +00:00
/* texture space */
2010-08-19 17:31:10 +00:00
prop = RNA_def_property ( srna , " use_auto_texspace " , PROP_BOOLEAN , PROP_NONE ) ;
2012-02-19 22:17:30 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " texflag " , ME_AUTOSPACE ) ;
2010-04-12 05:04:49 +00:00
RNA_def_property_ui_text ( prop , " Auto Texture Space " , " Adjusts active object's texture space automatically when transforming object " ) ;
2011-11-18 16:06:20 +00:00
2010-09-04 05:31:25 +00:00
/*prop= RNA_def_property(srna, "texspace_location", PROP_FLOAT, PROP_TRANSLATION);
2010-04-12 05:04:49 +00:00
RNA_def_property_array ( prop , 3 ) ;
2010-05-04 05:15:53 +00:00
RNA_def_property_ui_text ( prop , " Texture Space Location " , " Texture space location " ) ;
2010-04-12 05:04:49 +00:00
RNA_def_property_editable_func ( prop , " rna_Mesh_texspace_editable " ) ;
2011-11-18 16:06:20 +00:00
RNA_def_property_float_funcs ( prop , " rna_Mesh_texspace_loc_get " , " rna_Mesh_texspace_loc_set " , NULL ) ;
2010-04-12 05:04:49 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2010-09-04 05:31:25 +00:00
*/
2011-11-18 16:06:20 +00:00
2010-04-12 05:04:49 +00:00
/* not supported yet
2011-11-11 13:09:14 +00:00
prop = RNA_def_property ( srna , " texspace_rot " , PROP_FLOAT , PROP_EULER ) ;
RNA_def_property_float ( prop , NULL , " rot " ) ;
RNA_def_property_ui_text ( prop , " Texture Space Rotation " , " Texture space rotation " ) ;
RNA_def_property_editable_func ( prop , texspace_editable ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
*/
2010-09-07 05:47:34 +00:00
2009-08-06 23:34:14 +00:00
/* Mesh Draw Options for Edit Mode*/
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_edges " , PROP_BOOLEAN , PROP_NONE ) ;
2009-08-06 23:34:14 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWEDGES ) ;
2010-02-09 17:50:56 +00:00
RNA_def_property_ui_text ( prop , " Draw Edges " , " Displays selected edges using hilights in the 3D view and UV editor " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_all_edges " , PROP_BOOLEAN , PROP_NONE ) ;
2009-10-22 23:22:05 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_ALLEDGES ) ;
2010-02-09 17:50:56 +00:00
RNA_def_property_ui_text ( prop , " All Edges " , " Displays all edges for wireframe in all view modes in the 3D view " ) ;
2011-05-12 09:02:39 +00:00
RNA_def_property_update ( prop , NC_OBJECT | ND_DRAW , NULL ) ;
2009-10-22 23:22:05 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_faces " , PROP_BOOLEAN , PROP_NONE ) ;
2009-08-06 23:34:14 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWFACES ) ;
2010-02-09 17:50:56 +00:00
RNA_def_property_ui_text ( prop , " Draw Faces " , " Displays all faces as shades in the 3D view and UV editor " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_normal_face " , PROP_BOOLEAN , PROP_NONE ) ;
2009-08-06 23:34:14 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWNORMALS ) ;
RNA_def_property_ui_text ( prop , " Draw Normals " , " Displays face normals as lines " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_normal_vertex " , PROP_BOOLEAN , PROP_NONE ) ;
2009-08-06 23:34:14 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAW_VNORMALS ) ;
RNA_def_property_ui_text ( prop , " Draw Vertex Normals " , " Displays vertex normals as lines " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_edge_crease " , PROP_BOOLEAN , PROP_NONE ) ;
2009-08-06 23:34:14 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWCREASES ) ;
RNA_def_property_ui_text ( prop , " Draw Creases " , " Displays creases created for subsurf weighting " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_edge_bevel_weight " , PROP_BOOLEAN , PROP_NONE ) ;
2009-08-06 23:34:14 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWBWEIGHTS ) ;
RNA_def_property_ui_text ( prop , " Draw Bevel Weights " , " Displays weights created for the Bevel modifier " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_edge_seams " , PROP_BOOLEAN , PROP_NONE ) ;
2009-08-06 23:34:14 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWSEAMS ) ;
RNA_def_property_ui_text ( prop , " Draw Seams " , " Displays UV unwrapping seams " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_edge_sharp " , PROP_BOOLEAN , PROP_NONE ) ;
2009-08-06 23:34:14 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWSHARP ) ;
RNA_def_property_ui_text ( prop , " Draw Sharp " , " Displays sharp edges, used with the EdgeSplit modifier " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2011-05-12 09:02:39 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_extra_edge_length " , PROP_BOOLEAN , PROP_NONE ) ;
2010-12-20 03:59:22 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWEXTRA_EDGELEN ) ;
2010-07-26 18:20:20 +00:00
RNA_def_property_ui_text ( prop , " Edge Length " , " Displays selected edge lengths, Using global values when set in the transform panel " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2011-06-24 00:55:14 +00:00
prop = RNA_def_property ( srna , " show_extra_face_angle " , PROP_BOOLEAN , PROP_NONE ) ;
2010-12-20 03:59:22 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWEXTRA_FACEANG ) ;
2011-06-24 00:55:14 +00:00
RNA_def_property_ui_text ( prop , " Face Angles " , " Displays the angles in the selected edges in degrees, Using global values when set in the transform panel " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-08-06 23:34:14 +00:00
2010-08-17 17:03:52 +00:00
prop = RNA_def_property ( srna , " show_extra_face_area " , PROP_BOOLEAN , PROP_NONE ) ;
2010-12-20 03:59:22 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWEXTRA_FACEAREA ) ;
2010-07-26 18:20:20 +00:00
RNA_def_property_ui_text ( prop , " Face Area " , " Displays the area of selected faces, Using global values when set in the transform panel " ) ;
2009-09-16 17:43:09 +00:00
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2008-12-02 23:45:11 +00:00
2011-12-22 05:39:23 +00:00
prop = RNA_def_property ( srna , " show_extra_indices " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " drawflag " , ME_DRAWEXTRA_INDICES ) ;
RNA_def_property_ui_text ( prop , " Indices " , " Displays the index numbers of selected vertices, edges, and faces " ) ;
RNA_def_property_update ( prop , 0 , " rna_Mesh_update_draw " ) ;
2009-10-22 23:22:05 +00:00
/* editflag */
prop = RNA_def_property ( srna , " use_mirror_x " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " editflag " , ME_EDIT_MIRROR_X ) ;
RNA_def_property_ui_text ( prop , " X Mirror " , " X Axis mirror editing " ) ;
/*
prop = RNA_def_property ( srna , " use_mirror_y " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " editflag " , ME_EDIT_MIRROR_Y ) ;
RNA_def_property_ui_text ( prop , " Y Mirror " , " Y Axis mirror editing " ) ;
prop = RNA_def_property ( srna , " use_mirror_x " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " editflag " , ME_EDIT_MIRROR_Z ) ;
RNA_def_property_ui_text ( prop , " Z Mirror " , " Z Axis mirror editing " ) ;
*/
2009-09-10 03:59:12 +00:00
2010-02-17 19:50:42 +00:00
prop = RNA_def_property ( srna , " use_mirror_topology " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " editflag " , ME_EDIT_MIRROR_TOPO ) ;
2011-03-15 09:04:26 +00:00
RNA_def_property_ui_text ( prop , " Topology Mirror " , " Use topology based mirroring. For when both sides of mesh have matching, unique topology " ) ;
2010-02-17 19:50:42 +00:00
2009-11-01 00:06:53 +00:00
prop = RNA_def_property ( srna , " use_paint_mask " , PROP_BOOLEAN , PROP_NONE ) ;
RNA_def_property_boolean_sdna ( prop , NULL , " editflag " , ME_EDIT_PAINT_MASK ) ;
RNA_def_property_ui_text ( prop , " Paint Mask " , " Face selection masking for painting " ) ;
2009-11-28 21:27:28 +00:00
RNA_def_property_ui_icon ( prop , ICON_FACESEL_HLT , 0 ) ;
2012-02-05 21:48:41 +00:00
RNA_def_property_update ( prop , NC_SPACE | ND_SPACE_VIEW3D , " rna_Mesh_update_facemask " ) ;
2011-09-18 17:10:28 +00:00
2011-09-14 08:45:12 +00:00
prop = RNA_def_property ( srna , " use_paint_mask_vertex " , PROP_BOOLEAN , PROP_NONE ) ;
2011-07-12 19:06:06 +00:00
RNA_def_property_boolean_sdna ( prop , NULL , " editflag " , ME_EDIT_VERT_SEL ) ;
2011-09-14 08:45:12 +00:00
RNA_def_property_ui_text ( prop , " Vertex Selection " , " Vertex selection masking for painting (weight paint only) " ) ;
2011-07-13 20:45:09 +00:00
RNA_def_property_ui_icon ( prop , ICON_VERTEXSEL , 0 ) ;
2012-02-05 21:48:41 +00:00
RNA_def_property_update ( prop , NC_SPACE | ND_SPACE_VIEW3D , " rna_Mesh_update_vertmask " ) ;
2010-02-12 22:03:23 +00:00
/* readonly editmesh info - use for extrude menu */
prop = RNA_def_property ( srna , " total_vert_sel " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_funcs ( prop , " rna_Mesh_tot_vert_get " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " Selected Vert Total " , " Selected vertex count in editmode " ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
prop = RNA_def_property ( srna , " total_edge_sel " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_funcs ( prop , " rna_Mesh_tot_edge_get " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " Selected Edge Total " , " Selected edge count in editmode " ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
prop = RNA_def_property ( srna , " total_face_sel " , PROP_INT , PROP_UNSIGNED ) ;
RNA_def_property_int_funcs ( prop , " rna_Mesh_tot_face_get " , NULL , NULL ) ;
RNA_def_property_ui_text ( prop , " Selected Face Total " , " Selected face count in editmode " ) ;
RNA_def_property_clear_flag ( prop , PROP_EDITABLE ) ;
2009-12-28 00:52:31 +00:00
/* pointers */
rna_def_animdata_common ( srna ) ;
2008-12-02 23:45:11 +00:00
rna_def_texmat_common ( srna , " rna_Mesh_texspace_editable " ) ;
2009-06-18 19:48:55 +00:00
RNA_api_mesh ( srna ) ;
2008-11-24 12:12:24 +00:00
}
void RNA_def_mesh ( BlenderRNA * brna )
{
rna_def_mesh ( brna ) ;
rna_def_mvert ( brna ) ;
rna_def_mvert_group ( brna ) ;
rna_def_medge ( brna ) ;
rna_def_mface ( brna ) ;
2011-08-31 11:21:54 +00:00
rna_def_mloop ( brna ) ;
2011-08-31 05:13:21 +00:00
rna_def_mpolygon ( brna ) ;
2011-11-17 05:03:07 +00:00
rna_def_mloopuv ( brna ) ;
2011-11-25 13:28:04 +00:00
rna_def_mtface ( brna ) ;
2009-07-16 09:17:27 +00:00
rna_def_mtexpoly ( brna ) ;
2008-11-24 12:12:24 +00:00
rna_def_msticky ( brna ) ;
2011-11-25 13:28:04 +00:00
rna_def_mcol ( brna ) ;
2009-07-16 09:17:27 +00:00
rna_def_mloopcol ( brna ) ;
2008-11-24 12:12:24 +00:00
rna_def_mproperties ( brna ) ;
2008-11-07 02:58:25 +00:00
}
# endif