2008-11-07 02:58:25 +00:00
|
|
|
/**
|
|
|
|
* $Id$
|
|
|
|
*
|
|
|
|
* ***** 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
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* 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,
|
|
|
|
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*
|
|
|
|
* Contributor(s): Blender Foundation (2008).
|
|
|
|
*
|
|
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#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"
|
|
|
|
|
2008-11-07 02:58:25 +00:00
|
|
|
#ifdef RNA_RUNTIME
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
#include "DNA_scene_types.h"
|
|
|
|
|
|
|
|
#include "BLI_editVert.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"
|
|
|
|
#include "BKE_utildefines.h"
|
|
|
|
|
|
|
|
#include "WM_api.h"
|
|
|
|
#include "WM_types.h"
|
|
|
|
|
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;
|
|
|
|
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
DAG_id_flush_update(id, OB_RECALC_DATA);
|
2009-12-08 17:23:48 +00:00
|
|
|
WM_main_add_notifier(NC_GEOM|ND_DATA, id);
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
}
|
|
|
|
|
2009-12-08 17:23:48 +00:00
|
|
|
static void rna_Mesh_update_select(Main *bmain, Scene *scene, PointerRNA *ptr)
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
{
|
|
|
|
ID *id= ptr->id.data;
|
|
|
|
|
2009-12-08 17:23:48 +00:00
|
|
|
WM_main_add_notifier(NC_GEOM|ND_SELECT, id);
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
}
|
|
|
|
|
2009-12-08 17:23:48 +00:00
|
|
|
void rna_Mesh_update_draw(Main *bmain, Scene *scene, PointerRNA *ptr)
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
{
|
|
|
|
ID *id= ptr->id.data;
|
|
|
|
|
2009-12-08 17:23:48 +00:00
|
|
|
WM_main_add_notifier(NC_GEOM|ND_DATA, id);
|
2009-07-01 22:25:49 +00:00
|
|
|
}
|
|
|
|
|
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;
|
2009-06-20 15:06:18 +00:00
|
|
|
|
|
|
|
value[0]= mvert->no[0]/32767.0f;
|
|
|
|
value[1]= mvert->no[1]/32767.0f;
|
|
|
|
value[2]= mvert->no[2]/32767.0f;
|
|
|
|
}
|
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));
|
|
|
|
}
|
|
|
|
|
2009-07-27 18:17:21 +00:00
|
|
|
static void rna_MeshFace_normal_get(PointerRNA *ptr, float *values)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
MFace *mface= (MFace*)ptr->data;
|
|
|
|
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
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
|
|
|
}
|
|
|
|
|
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
|
|
|
}
|
|
|
|
|
|
|
|
static int rna_Mesh_texspace_editable(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-03-23 13:24:48 +00:00
|
|
|
return (me->texflag & 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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
|
|
|
|
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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
*min= 0;
|
|
|
|
*max= me->totcol-1;
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static CustomData *rna_mesh_fdata(Mesh *me)
|
|
|
|
{
|
|
|
|
return (me->edit_mesh)? &me->edit_mesh->fdata: &me->fdata;
|
|
|
|
}
|
|
|
|
|
2008-11-24 12:12:24 +00:00
|
|
|
static int rna_CustomDataLayer_length(PointerRNA *ptr, int type)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2008-11-24 12:12:24 +00:00
|
|
|
CustomDataLayer *layer;
|
|
|
|
int i, length= 0;
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
for(layer=fdata->layers, i=0; i<fdata->totlayer; layer++, i++)
|
2008-11-24 12:12:24 +00:00
|
|
|
if(layer->type == type)
|
|
|
|
length++;
|
|
|
|
|
|
|
|
return length;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int rna_CustomDataLayer_active_get(PointerRNA *ptr, int type, int render)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
|
2008-11-24 12:12:24 +00:00
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
if(render) return (n == CustomData_get_render_layer_index(fdata, type));
|
|
|
|
else return (n == CustomData_get_active_layer_index(fdata, type));
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-11-24 00:56:52 +00:00
|
|
|
static int rna_CustomDataLayer_clone_get(PointerRNA *ptr, int type, int render)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
|
|
|
|
|
|
|
|
return (n == CustomData_get_clone_layer_index(fdata, type));
|
|
|
|
}
|
|
|
|
|
2008-11-24 12:12:24 +00:00
|
|
|
static void rna_CustomDataLayer_active_set(PointerRNA *ptr, int value, int type, int render)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
|
2008-11-24 12:12:24 +00:00
|
|
|
|
|
|
|
if(value == 0)
|
|
|
|
return;
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
if(render) CustomData_set_layer_render_index(fdata, type, n);
|
|
|
|
else CustomData_set_layer_active_index(fdata, type, n);
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-11-24 00:56:52 +00:00
|
|
|
static void rna_CustomDataLayer_clone_set(PointerRNA *ptr, int value, int type, int render)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
int n= ((CustomDataLayer*)ptr->data) - fdata->layers;
|
|
|
|
|
|
|
|
if(value == 0)
|
|
|
|
return;
|
|
|
|
|
|
|
|
CustomData_set_layer_clone_index(fdata, type, n);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static int rna_uv_texture_check(CollectionPropertyIterator *iter, void *data)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
CustomDataLayer *layer= (CustomDataLayer*)data;
|
|
|
|
return (layer->type != CD_MTFACE);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static void rna_Mesh_uv_textures_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-07-13 19:33:59 +00:00
|
|
|
rna_iterator_array_begin(iter, (void*)fdata->layers, sizeof(CustomDataLayer), fdata->totlayer, 0, rna_uv_texture_check);
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static int rna_Mesh_uv_textures_length(PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_length(ptr, CD_MTFACE);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static PointerRNA rna_Mesh_active_uv_texture_get(PointerRNA *ptr)
|
2009-06-27 01:10:39 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
int index= CustomData_get_active_layer_index(fdata, CD_MTFACE);
|
|
|
|
CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index];
|
2009-06-27 01:10:39 +00:00
|
|
|
|
|
|
|
return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
|
|
|
|
}
|
|
|
|
|
2009-12-22 10:48:13 +00:00
|
|
|
static PointerRNA rna_Mesh_uv_texture_clone_get(PointerRNA *ptr)
|
2009-11-24 00:56:52 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
int index= CustomData_get_clone_layer_index(fdata, CD_MTFACE);
|
|
|
|
CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index];
|
|
|
|
|
|
|
|
return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
|
|
|
|
}
|
|
|
|
|
2009-12-22 10:48:13 +00:00
|
|
|
static PointerRNA rna_Mesh_uv_texture_stencil_get(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
int index= CustomData_get_stencil_layer_index(fdata, CD_MTFACE);
|
|
|
|
CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index];
|
|
|
|
|
|
|
|
return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFaceLayer, cdl);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static void rna_Mesh_active_uv_texture_set(PointerRNA *ptr, PointerRNA value)
|
2009-06-27 01:10:39 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-06-27 01:10:39 +00:00
|
|
|
CustomDataLayer *cdl;
|
|
|
|
int a;
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
|
2009-06-27 01:10:39 +00:00
|
|
|
if(value.data == cdl) {
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData_set_layer_active_index(fdata, CD_MTFACE, a);
|
|
|
|
mesh_update_customdata_pointers(me);
|
2009-06-27 01:10:39 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-12-22 10:48:13 +00:00
|
|
|
static void rna_Mesh_uv_texture_clone_set(PointerRNA *ptr, PointerRNA value)
|
2009-11-24 00:56:52 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
CustomDataLayer *cdl;
|
|
|
|
int a;
|
|
|
|
|
|
|
|
for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
|
|
|
|
if(value.data == cdl) {
|
|
|
|
CustomData_set_layer_clone_index(fdata, CD_MTFACE, a);
|
2009-12-22 10:48:13 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void rna_Mesh_uv_texture_stencil_set(PointerRNA *ptr, PointerRNA value)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
CustomDataLayer *cdl;
|
|
|
|
int a;
|
|
|
|
|
|
|
|
for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
|
|
|
|
if(value.data == cdl) {
|
|
|
|
CustomData_set_layer_stencil_index(fdata, CD_MTFACE, a);
|
2009-11-24 00:56:52 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static int rna_Mesh_active_uv_texture_index_get(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
return CustomData_get_active_layer(fdata, CD_MTFACE);
|
|
|
|
}
|
|
|
|
|
2009-12-22 10:48:13 +00:00
|
|
|
static int rna_Mesh_uv_texture_clone_index_get(PointerRNA *ptr)
|
2009-11-24 00:56:52 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
return CustomData_get_clone_layer(fdata, CD_MTFACE);
|
|
|
|
}
|
|
|
|
|
2009-12-22 10:48:13 +00:00
|
|
|
static int rna_Mesh_uv_texture_stencil_index_get(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
return CustomData_get_stencil_layer(fdata, CD_MTFACE);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static void rna_Mesh_active_uv_texture_index_set(PointerRNA *ptr, int value)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
|
|
|
|
CustomData_set_layer_active(fdata, CD_MTFACE, value);
|
|
|
|
mesh_update_customdata_pointers(me);
|
|
|
|
}
|
|
|
|
|
2009-12-22 10:48:13 +00:00
|
|
|
static void rna_Mesh_uv_texture_clone_index_set(PointerRNA *ptr, int value)
|
2009-11-24 00:56:52 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
|
|
|
|
CustomData_set_layer_clone(fdata, CD_MTFACE, value);
|
2009-12-22 10:48:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void rna_Mesh_uv_texture_stencil_index_set(PointerRNA *ptr, int value)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
|
|
|
|
CustomData_set_layer_stencil(fdata, CD_MTFACE, value);
|
2009-11-24 00:56:52 +00:00
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, int *max)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
|
|
|
|
*min= 0;
|
|
|
|
*max= CustomData_number_of_layers(fdata, CD_MTFACE)-1;
|
|
|
|
*max= MAX2(0, *max);
|
|
|
|
}
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
static void rna_MeshTextureFace_uv1_get(PointerRNA *ptr, float *values)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
MTFace *mtface= (MTFace*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
|
|
|
values[0]= mtface->uv[0][0];
|
|
|
|
values[1]= mtface->uv[0][1];
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
static void rna_MeshTextureFace_uv1_set(PointerRNA *ptr, const float *values)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
MTFace *mtface= (MTFace*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
|
|
|
mtface->uv[0][0]= values[0];
|
|
|
|
mtface->uv[0][1]= values[1];
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
static void rna_MeshTextureFace_uv2_get(PointerRNA *ptr, float *values)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
MTFace *mtface= (MTFace*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
|
|
|
values[0]= mtface->uv[1][0];
|
|
|
|
values[1]= mtface->uv[1][1];
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
static void rna_MeshTextureFace_uv2_set(PointerRNA *ptr, const float *values)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
MTFace *mtface= (MTFace*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
|
|
|
mtface->uv[1][0]= values[0];
|
|
|
|
mtface->uv[1][1]= values[1];
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
static void rna_MeshTextureFace_uv3_get(PointerRNA *ptr, float *values)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
MTFace *mtface= (MTFace*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
|
|
|
values[0]= mtface->uv[2][0];
|
|
|
|
values[1]= mtface->uv[2][1];
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
static void rna_MeshTextureFace_uv3_set(PointerRNA *ptr, const float *values)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
MTFace *mtface= (MTFace*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
|
|
|
mtface->uv[2][0]= values[0];
|
|
|
|
mtface->uv[2][1]= values[1];
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
static void rna_MeshTextureFace_uv4_get(PointerRNA *ptr, float *values)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
MTFace *mtface= (MTFace*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
|
|
|
values[0]= mtface->uv[3][0];
|
|
|
|
values[1]= mtface->uv[3][1];
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
static void rna_MeshTextureFace_uv4_set(PointerRNA *ptr, const float *values)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
MTFace *mtface= (MTFace*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
|
|
|
mtface->uv[3][0]= values[0];
|
|
|
|
mtface->uv[3][1]= values[1];
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
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 int rna_CustomDataData_numverts(PointerRNA *ptr, int type)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
CustomDataLayer *cdl;
|
|
|
|
int a;
|
|
|
|
size_t 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;
|
|
|
|
}
|
|
|
|
|
2009-09-09 19:40:46 +00:00
|
|
|
static int rna_MeshTextureFace_uv_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
|
|
|
{
|
2009-09-09 19:40:46 +00:00
|
|
|
length[0]= rna_CustomDataData_numverts(ptr, CD_MTFACE);
|
|
|
|
length[1]= 2;
|
|
|
|
return length[0]*length[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
|
|
|
}
|
|
|
|
|
|
|
|
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-01-02 14:48:03 +00:00
|
|
|
static void rna_MeshTextureFaceLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
CustomDataLayer *layer= (CustomDataLayer*)ptr->data;
|
2009-07-13 19:33:59 +00:00
|
|
|
rna_iterator_array_begin(iter, layer->data, sizeof(MTFace), me->totface, 0, NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-01-02 14:48:03 +00:00
|
|
|
static int rna_MeshTextureFaceLayer_data_length(PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
return me->totface;
|
|
|
|
}
|
|
|
|
|
2009-01-02 14:48:03 +00:00
|
|
|
static int rna_MeshTextureFaceLayer_active_render_get(PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_active_get(ptr, CD_MTFACE, 1);
|
|
|
|
}
|
|
|
|
|
2009-01-02 14:48:03 +00:00
|
|
|
static int rna_MeshTextureFaceLayer_active_get(PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_active_get(ptr, CD_MTFACE, 0);
|
|
|
|
}
|
|
|
|
|
2009-11-24 00:56:52 +00:00
|
|
|
static int rna_MeshTextureFaceLayer_clone_get(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_clone_get(ptr, CD_MTFACE, 0);
|
|
|
|
}
|
|
|
|
|
2009-01-02 14:48:03 +00:00
|
|
|
static void rna_MeshTextureFaceLayer_active_render_set(PointerRNA *ptr, int value)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 1);
|
|
|
|
}
|
|
|
|
|
2009-01-02 14:48:03 +00:00
|
|
|
static void rna_MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
rna_CustomDataLayer_active_set(ptr, value, CD_MTFACE, 0);
|
|
|
|
}
|
|
|
|
|
2009-11-24 00:56:52 +00:00
|
|
|
static void rna_MeshTextureFaceLayer_clone_set(PointerRNA *ptr, int value)
|
|
|
|
{
|
|
|
|
rna_CustomDataLayer_clone_set(ptr, value, CD_MTFACE, 0);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static void rna_MeshTextureFaceLayer_name_set(PointerRNA *ptr, const char *value)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
2009-11-05 16:40:12 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomDataLayer *cdl= (CustomDataLayer*)ptr->data;
|
|
|
|
BLI_strncpy(cdl->name, value, sizeof(cdl->name));
|
2009-11-05 16:40:12 +00:00
|
|
|
CustomData_set_layer_unique_name(fdata, cdl - fdata->layers);
|
2009-07-01 22:25:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int rna_vertex_color_check(CollectionPropertyIterator *iter, void *data)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
CustomDataLayer *layer= (CustomDataLayer*)data;
|
|
|
|
return (layer->type != CD_MCOL);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static void rna_Mesh_vertex_colors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-07-13 19:33:59 +00:00
|
|
|
rna_iterator_array_begin(iter, (void*)fdata->layers, sizeof(CustomDataLayer), fdata->totlayer, 0, rna_vertex_color_check);
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static int rna_Mesh_vertex_colors_length(PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_length(ptr, CD_MCOL);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static PointerRNA rna_Mesh_active_vertex_color_get(PointerRNA *ptr)
|
2009-06-27 01:10:39 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
int index= CustomData_get_active_layer_index(fdata, CD_MCOL);
|
|
|
|
CustomDataLayer *cdl= (index == -1)? NULL: &fdata->layers[index];
|
2009-06-27 01:10:39 +00:00
|
|
|
|
|
|
|
return rna_pointer_inherit_refine(ptr, &RNA_MeshColorLayer, cdl);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static void rna_Mesh_active_vertex_color_set(PointerRNA *ptr, PointerRNA value)
|
2009-06-27 01:10:39 +00:00
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-06-27 01:10:39 +00:00
|
|
|
CustomDataLayer *cdl;
|
|
|
|
int a;
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
for(cdl=fdata->layers, a=0; a<fdata->totlayer; cdl++, a++) {
|
2009-06-27 01:10:39 +00:00
|
|
|
if(value.data == cdl) {
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData_set_layer_active_index(fdata, CD_MCOL, a);
|
|
|
|
mesh_update_customdata_pointers(me);
|
2009-06-27 01:10:39 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static int rna_Mesh_active_vertex_color_index_get(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
return CustomData_get_active_layer(fdata, CD_MCOL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void rna_Mesh_active_vertex_color_index_set(PointerRNA *ptr, int value)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
|
|
|
|
CustomData_set_layer_active(fdata, CD_MCOL, value);
|
|
|
|
mesh_update_customdata_pointers(me);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void rna_Mesh_active_vertex_color_index_range(PointerRNA *ptr, int *min, int *max)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
|
|
|
|
|
|
|
*min= 0;
|
|
|
|
*max= CustomData_number_of_layers(fdata, CD_MCOL)-1;
|
|
|
|
*max= MAX2(0, *max);
|
|
|
|
}
|
|
|
|
|
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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
CustomDataLayer *layer= (CustomDataLayer*)ptr->data;
|
2009-07-13 19:33:59 +00:00
|
|
|
rna_iterator_array_begin(iter, layer->data, sizeof(MCol)*4, me->totface, 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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
return me->totface;
|
|
|
|
}
|
|
|
|
|
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
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_active_get(ptr, CD_MCOL, 1);
|
|
|
|
}
|
|
|
|
|
2009-01-10 22:57:33 +00:00
|
|
|
static int rna_MeshColorLayer_active_get(PointerRNA *ptr)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_active_get(ptr, CD_MCOL, 0);
|
|
|
|
}
|
|
|
|
|
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
|
|
|
{
|
|
|
|
rna_CustomDataLayer_active_set(ptr, value, CD_MCOL, 1);
|
|
|
|
}
|
|
|
|
|
2009-01-10 22:57:33 +00:00
|
|
|
static void rna_MeshColorLayer_active_set(PointerRNA *ptr, int value)
|
2008-11-24 12:12:24 +00:00
|
|
|
{
|
|
|
|
rna_CustomDataLayer_active_set(ptr, value, CD_MCOL, 0);
|
|
|
|
}
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
static void rna_MeshColorLayer_name_set(PointerRNA *ptr, const char *value)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
2009-11-05 16:40:12 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomDataLayer *cdl= (CustomDataLayer*)ptr->data;
|
|
|
|
BLI_strncpy(cdl->name, value, sizeof(cdl->name));
|
2009-11-05 16:40:12 +00:00
|
|
|
CustomData_set_layer_unique_name(fdata, cdl - fdata->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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-07-13 19:33:59 +00:00
|
|
|
rna_iterator_array_begin(iter, (void*)fdata->layers, sizeof(CustomDataLayer), fdata->totlayer, 0, rna_float_layer_check);
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int rna_Mesh_float_layers_length(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_length(ptr, CD_PROP_FLT);
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
return me->totface;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void rna_Mesh_int_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-07-13 19:33:59 +00:00
|
|
|
rna_iterator_array_begin(iter, (void*)fdata->layers, sizeof(CustomDataLayer), fdata->totlayer, 0, rna_int_layer_check);
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int rna_Mesh_int_layers_length(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_length(ptr, CD_PROP_INT);
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
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
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
return me->totface;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void rna_Mesh_string_layers_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-07-13 19:33:59 +00:00
|
|
|
rna_iterator_array_begin(iter, (void*)fdata->layers, sizeof(CustomDataLayer), fdata->totlayer, 0, rna_string_layer_check);
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int rna_Mesh_string_layers_length(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
return rna_CustomDataLayer_length(ptr, CD_PROP_STR);
|
|
|
|
}
|
|
|
|
|
2009-05-29 15:12:31 +00:00
|
|
|
static void rna_TextureFace_image_set(PointerRNA *ptr, PointerRNA value)
|
|
|
|
{
|
|
|
|
MTFace *tf= (MTFace*)ptr->data;
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2009-09-09 19:40:46 +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-09 19:40:46 +00:00
|
|
|
|
2009-08-29 23:05:46 +00:00
|
|
|
if(face)
|
2009-09-09 19:40:46 +00:00
|
|
|
length[0]= (face->v4)? 4: 3;
|
2009-08-29 23:05:46 +00:00
|
|
|
else
|
2009-09-09 19:40:46 +00:00
|
|
|
length[0]= 4; // XXX rna_raw_access wants the length of a dummy face. this needs fixing. - Campbell
|
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
|
|
|
|
2009-09-09 19:40:46 +00:00
|
|
|
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-09 19:40:46 +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));
|
|
|
|
}
|
|
|
|
|
2009-10-12 19:34:58 +00:00
|
|
|
static int rna_MeshVertex_index_get(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
MVert *vert= (MVert*)ptr->data;
|
|
|
|
return (int)(vert - me->mvert);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int rna_MeshEdge_index_get(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
MEdge *edge= (MEdge*)ptr->data;
|
|
|
|
return (int)(edge - me->medge);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int rna_MeshFace_index_get(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
|
|
|
MFace *face= (MFace*)ptr->data;
|
|
|
|
return (int)(face - me->mface);
|
|
|
|
}
|
|
|
|
|
2009-03-25 20:29:01 +00:00
|
|
|
/* path construction */
|
|
|
|
|
|
|
|
static char *rna_VertexGroupElement_path(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data; /* XXX not always! */
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
static char *rna_MeshFace_path(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
return BLI_sprintfN("faces[%d]", (MFace*)ptr->data - ((Mesh*)ptr->id.data)->mface);
|
|
|
|
}
|
|
|
|
|
|
|
|
static char *rna_MeshEdge_path(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
return BLI_sprintfN("edges[%d]", (MEdge*)ptr->data - ((Mesh*)ptr->id.data)->medge);
|
|
|
|
}
|
|
|
|
|
|
|
|
static char *rna_MeshVertex_path(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
return BLI_sprintfN("verts[%d]", (MVert*)ptr->data - ((Mesh*)ptr->id.data)->mvert);
|
|
|
|
}
|
|
|
|
|
|
|
|
static char *rna_MeshTextureFaceLayer_path(PointerRNA *ptr)
|
|
|
|
{
|
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
|
|
|
}
|
|
|
|
|
|
|
|
static char *rna_CustomDataData_path(PointerRNA *ptr, char *collection, int type)
|
|
|
|
{
|
|
|
|
Mesh *me= (Mesh*)ptr->id.data;
|
2009-07-01 22:25:49 +00:00
|
|
|
CustomData *fdata= rna_mesh_fdata(me);
|
2009-03-25 20:29:01 +00:00
|
|
|
CustomDataLayer *cdl;
|
|
|
|
int a;
|
|
|
|
size_t b;
|
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
for(cdl=fdata->layers, a=0; a<fdata->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);
|
|
|
|
if(b >= 0 && b < me->totface)
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
static char *rna_MeshTextureFace_path(PointerRNA *ptr)
|
|
|
|
{
|
2009-07-01 22:25:49 +00:00
|
|
|
return rna_CustomDataData_path(ptr, "uv_textures", CD_MTFACE);
|
2009-03-25 20:29:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static char *rna_MeshColorLayer_path(PointerRNA *ptr)
|
|
|
|
{
|
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)
|
|
|
|
{
|
2009-07-01 22:25:49 +00:00
|
|
|
return rna_CustomDataData_path(ptr, "vertex_colors", CD_MCOL);
|
2009-03-25 20:29:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static char *rna_MeshSticky_path(PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
return BLI_sprintfN("sticky[%d]", (MSticky*)ptr->data - ((Mesh*)ptr->id.data)->msticky);
|
|
|
|
}
|
|
|
|
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
return rna_CustomDataData_path(ptr, "int_layers", CD_MCOL);
|
|
|
|
}
|
|
|
|
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
return rna_CustomDataData_path(ptr, "float_layers", CD_MCOL);
|
|
|
|
}
|
|
|
|
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
return rna_CustomDataData_path(ptr, "string_layers", CD_MCOL);
|
|
|
|
}
|
|
|
|
|
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");
|
2009-06-03 23:16:51 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Vertex Group Element", "Weight value of a vertex in a vertex group.");
|
|
|
|
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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2009-01-10 22:57:33 +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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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);
|
2009-06-20 15:06:18 +00:00
|
|
|
RNA_def_property_float_sdna(prop, NULL, "no");
|
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshVertex_normal_get", NULL, NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Normal", "Vertex Normal");
|
2009-06-20 15:06:18 +00:00
|
|
|
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
2008-11-24 12:12:24 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT);
|
|
|
|
RNA_def_property_ui_text(prop, "Selected", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "hidden", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE);
|
|
|
|
RNA_def_property_ui_text(prop, "Hidden", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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);
|
2009-11-13 16:08:03 +00:00
|
|
|
RNA_def_property_collection_funcs(prop, "rna_MeshVertex_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0);
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_struct_type(prop, "VertexGroupElement");
|
2009-01-02 14:48:03 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Groups", "Weights for the vertex groups this vertex is member of.");
|
2009-10-12 19:34:58 +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);
|
|
|
|
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");
|
2009-01-10 22:57:33 +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
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "verts", PROP_INT, PROP_UNSIGNED);
|
|
|
|
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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "selected", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT);
|
|
|
|
RNA_def_property_ui_text(prop, "Selected", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "hidden", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE);
|
|
|
|
RNA_def_property_ui_text(prop, "Hidden", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "seam", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SEAM);
|
|
|
|
RNA_def_property_ui_text(prop, "Seam", "Seam edge for UV unwrapping");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "sharp", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SHARP);
|
|
|
|
RNA_def_property_ui_text(prop, "Sharp", "Sharp edge for the EdgeSplit modifier");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
|
2009-06-26 12:33:07 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "loose", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_LOOSEEDGE);
|
|
|
|
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
|
|
|
RNA_def_property_ui_text(prop, "Loose", "Loose edge");
|
2009-08-06 12:22:50 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "fgon", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_FGON);
|
|
|
|
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
|
|
|
RNA_def_property_ui_text(prop, "Fgon", "Fgon edge");
|
2009-10-12 19:34:58 +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_MeshEdge_index_get", NULL, NULL);
|
|
|
|
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");
|
2009-01-10 22:57:33 +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
|
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
|
|
|
prop= RNA_def_property(srna, "verts", PROP_INT, PROP_UNSIGNED);
|
|
|
|
RNA_def_property_array(prop, 4);
|
|
|
|
RNA_def_property_flag(prop, PROP_DYNAMIC);
|
2009-09-09 19:40:46 +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-09-29 12:34:05 +00:00
|
|
|
/* leaving this fixed size array for foreach_set used in import scripts */
|
|
|
|
prop= RNA_def_property(srna, "verts_raw", PROP_INT, PROP_UNSIGNED);
|
|
|
|
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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "selected", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_FACE_SEL);
|
|
|
|
RNA_def_property_ui_text(prop, "Selected", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "hidden", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE);
|
|
|
|
RNA_def_property_ui_text(prop, "Hidden", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "smooth", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SMOOTH);
|
|
|
|
RNA_def_property_ui_text(prop, "Smooth", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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-12 19:34:58 +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-12 19:34:58 +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);
|
|
|
|
RNA_def_property_ui_text(prop, "Index", "Index number of the vertex.");
|
2008-11-24 12:12:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void rna_def_mtface(BlenderRNA *brna)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem transp_items[]= {
|
2009-06-16 00:52:21 +00:00
|
|
|
{TF_SOLID, "OPAQUE", 0, "Opaque", "Render color of textured face as color"},
|
|
|
|
{TF_ADD, "ADD", 0, "Add", "Render face transparent and add color of face"},
|
|
|
|
{TF_ALPHA, "ALPHA", 0, "Alpha", "Render polygon transparent, depending on alpha channel of the texture"},
|
|
|
|
{TF_CLIP, "CLIPALPHA", 0, "Clip Alpha", "Use the images alpha values clipped with no blending (binary alpha)"},
|
|
|
|
{0, NULL, 0, NULL, NULL}};
|
2009-09-09 19:40:46 +00:00
|
|
|
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);
|
|
|
|
RNA_def_struct_ui_text(srna, "Mesh Texture Face Layer", "Layer of texture faces in a Mesh datablock.");
|
|
|
|
RNA_def_struct_sdna(srna, "CustomDataLayer");
|
2009-03-25 20:29:01 +00:00
|
|
|
RNA_def_struct_path_func(srna, "rna_MeshTextureFaceLayer_path");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Name", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
|
|
|
RNA_def_property_ui_text(prop, "Active", "Sets the layer as active for display and editing");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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);
|
|
|
|
RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_active_render_get", "rna_MeshTextureFaceLayer_active_render_set");
|
|
|
|
RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
|
|
|
RNA_def_property_ui_text(prop, "Active Clone", "Sets the layer as active for cloning");
|
|
|
|
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", "");
|
2009-11-13 16:08:03 +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", 0, 0);
|
2009-01-10 22:57:33 +00:00
|
|
|
|
2009-01-02 14:48:03 +00:00
|
|
|
srna= RNA_def_struct(brna, "MeshTextureFace", NULL);
|
|
|
|
RNA_def_struct_sdna(srna, "MTFace");
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Mesh Texture Face", "UV mapping, texturing and game engine data 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
|
|
|
|
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");
|
2009-06-07 13:09:18 +00:00
|
|
|
RNA_def_property_pointer_funcs(prop, NULL, "rna_TextureFace_image_set", NULL);
|
2009-05-29 15:12:31 +00:00
|
|
|
RNA_def_property_flag(prop, PROP_EDITABLE);
|
|
|
|
RNA_def_property_ui_text(prop, "Image", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "tex", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_TEX);
|
|
|
|
RNA_def_property_ui_text(prop, "Tex", "Render face with texture");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "light", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_LIGHT);
|
|
|
|
RNA_def_property_ui_text(prop, "Light", "Use light for face");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
|
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
|
2008-11-24 12:12:24 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "invisible", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_INVISIBLE);
|
|
|
|
RNA_def_property_ui_text(prop, "Invisible", "Make face invisible");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "collision", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_DYNAMIC);
|
|
|
|
RNA_def_property_ui_text(prop, "Collision", "Use face for collision and ray-sensor detection");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "shared", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_SHAREDCOL);
|
|
|
|
RNA_def_property_ui_text(prop, "Shared", "Blend vertex colors across face when vertices are shared");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "twoside", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_TWOSIDE);
|
|
|
|
RNA_def_property_ui_text(prop, "Twoside", "Render face twosided");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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
|
|
|
prop= RNA_def_property(srna, "object_color", PROP_BOOLEAN, PROP_NONE);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_OBCOL);
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Object Color", "Use ObColor instead of vertex colors");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "halo", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BILLBOARD);
|
|
|
|
RNA_def_property_ui_text(prop, "Halo", "Screen aligned billboard");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "billboard", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BILLBOARD2);
|
|
|
|
RNA_def_property_ui_text(prop, "Billboard", "Billboard with Z-axis constraint");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "shadow", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_SHADOW);
|
|
|
|
RNA_def_property_ui_text(prop, "Shadow", "Face is used for shadow");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "text", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BMFONT);
|
|
|
|
RNA_def_property_ui_text(prop, "Text", "Enable bitmap text on face");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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
|
|
|
prop= RNA_def_property(srna, "alpha_sort", PROP_BOOLEAN, PROP_NONE);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_ALPHASORT);
|
|
|
|
RNA_def_property_ui_text(prop, "Alpha Sort", "Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible)");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "transp", PROP_ENUM, PROP_NONE);
|
|
|
|
RNA_def_property_enum_items(prop, transp_items);
|
|
|
|
RNA_def_property_ui_text(prop, "Transparency", "Transparency blending mode");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "uv_selected", 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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "uv_pinned", 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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_select");
|
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, "uv1", PROP_FLOAT, PROP_XYZ);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_array(prop, 2);
|
2009-01-02 14:48:03 +00:00
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshTextureFace_uv1_get", "rna_MeshTextureFace_uv1_set", NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "UV 1", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "uv2", PROP_FLOAT, PROP_XYZ);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_array(prop, 2);
|
2009-01-02 14:48:03 +00:00
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshTextureFace_uv2_get", "rna_MeshTextureFace_uv2_set", NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "UV 2", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "uv3", PROP_FLOAT, PROP_XYZ);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_array(prop, 2);
|
2009-01-02 14:48:03 +00:00
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshTextureFace_uv3_get", "rna_MeshTextureFace_uv3_set", NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "UV 3", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "uv4", PROP_FLOAT, PROP_XYZ);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_array(prop, 2);
|
2009-01-02 14:48:03 +00:00
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshTextureFace_uv4_get", "rna_MeshTextureFace_uv4_set", NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "UV 4", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
|
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
|
|
|
|
2009-09-06 15:13:57 +00:00
|
|
|
prop= RNA_def_property(srna, "uv", PROP_FLOAT, PROP_NONE);
|
2009-09-09 19:40:46 +00:00
|
|
|
RNA_def_property_multi_array(prop, 2, uv_dim);
|
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_flag(prop, PROP_DYNAMIC);
|
2009-09-09 19:40:46 +00:00
|
|
|
RNA_def_property_dynamic_array_funcs(prop, "rna_MeshTextureFace_uv_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_float_funcs(prop, "rna_MeshTextureFace_uv_get", "rna_MeshTextureFace_uv_set", NULL);
|
|
|
|
RNA_def_property_ui_text(prop, "UV", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +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_msticky(BlenderRNA *brna)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
PropertyRNA *prop;
|
|
|
|
|
|
|
|
srna= RNA_def_struct(brna, "MeshSticky", NULL);
|
|
|
|
RNA_def_struct_sdna(srna, "MSticky");
|
|
|
|
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);
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Location", "Sticky texture coordinate location.");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
|
2009-01-10 22:57:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void rna_def_mcol(BlenderRNA *brna)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
PropertyRNA *prop;
|
|
|
|
|
|
|
|
srna= RNA_def_struct(brna, "MeshColorLayer", NULL);
|
|
|
|
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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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);
|
2009-07-01 22:25:49 +00:00
|
|
|
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MeshColorLayer_name_set");
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Name", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "MeshColor");
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Data", "");
|
2009-11-13 16:08:03 +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", 0, 0);
|
2008-11-24 12:12:24 +00:00
|
|
|
|
2009-01-10 22:57:33 +00:00
|
|
|
srna= RNA_def_struct(brna, "MeshColor", NULL);
|
|
|
|
RNA_def_struct_sdna(srna, "MCol");
|
|
|
|
RNA_def_struct_ui_text(srna, "Mesh Vertex Color", "Vertex colors for a face in a Mesh.");
|
2009-03-25 20:29:01 +00:00
|
|
|
RNA_def_struct_path_func(srna, "rna_MeshColor_path");
|
2008-11-24 12:12:24 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "color1", PROP_FLOAT, PROP_COLOR);
|
|
|
|
RNA_def_property_array(prop, 3);
|
2009-06-20 13:53:14 +00:00
|
|
|
RNA_def_property_range(prop, 0.0f, 1.0f);
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshColor_color1_get", "rna_MeshColor_color1_set", NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Color 1", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "color2", PROP_FLOAT, PROP_COLOR);
|
|
|
|
RNA_def_property_array(prop, 3);
|
2009-06-20 13:53:14 +00:00
|
|
|
RNA_def_property_range(prop, 0.0f, 1.0f);
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshColor_color2_get", "rna_MeshColor_color2_set", NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Color 2", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "color3", PROP_FLOAT, PROP_COLOR);
|
|
|
|
RNA_def_property_array(prop, 3);
|
2009-06-20 13:53:14 +00:00
|
|
|
RNA_def_property_range(prop, 0.0f, 1.0f);
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshColor_color3_get", "rna_MeshColor_color3_set", NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Color 3", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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, "color4", PROP_FLOAT, PROP_COLOR);
|
|
|
|
RNA_def_property_array(prop, 3);
|
2009-06-20 13:53:14 +00:00
|
|
|
RNA_def_property_range(prop, 0.0f, 1.0f);
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_float_funcs(prop, "rna_MeshColor_color4_get", "rna_MeshColor_color4_set", NULL);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Color 4", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +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");
|
2009-01-10 22:57:33 +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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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", "");
|
2009-11-13 16:08:03 +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", 0, 0);
|
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");
|
|
|
|
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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2009-01-10 22:57:33 +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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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", "");
|
2009-11-13 16:08:03 +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", 0, 0);
|
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");
|
|
|
|
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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2009-01-10 22:57:33 +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", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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", "");
|
2009-11-13 16:08:03 +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", 0, 0);
|
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");
|
|
|
|
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
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "value", PROP_STRING, PROP_NONE);
|
|
|
|
RNA_def_property_string_sdna(prop, NULL, "s");
|
|
|
|
RNA_def_property_ui_text(prop, "Value", "");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "texflag", AUTOSPACE);
|
2009-01-02 14:48:03 +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
|
|
|
|
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_loc", PROP_FLOAT, PROP_TRANSLATION);
|
2008-12-02 23:45:11 +00:00
|
|
|
RNA_def_property_float_sdna(prop, NULL, "loc");
|
2009-01-02 14:48:03 +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);
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2009-01-02 14:48:03 +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);
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51: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", "");
|
|
|
|
}
|
|
|
|
|
2009-12-13 14:13:25 +00:00
|
|
|
|
|
|
|
/* scene.objects */
|
|
|
|
static void rna_def_mesh_faces(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
PropertyRNA *prop;
|
|
|
|
|
|
|
|
// FunctionRNA *func;
|
|
|
|
// PropertyRNA *parm;
|
|
|
|
|
|
|
|
RNA_def_property_srna(cprop, "MeshFaces");
|
|
|
|
srna= RNA_def_struct(brna, "MeshFaces", NULL);
|
|
|
|
RNA_def_struct_sdna(srna, "Mesh");
|
|
|
|
RNA_def_struct_ui_text(srna, "Mesh Faces", "Collection of mesh faces.");
|
|
|
|
|
|
|
|
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");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
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");
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Mesh", "Mesh datablock to define 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
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "verts", PROP_COLLECTION, PROP_NONE);
|
|
|
|
RNA_def_property_collection_sdna(prop, NULL, "mvert", "totvert");
|
2009-01-02 14:48:03 +00:00
|
|
|
RNA_def_property_struct_type(prop, "MeshVertex");
|
|
|
|
RNA_def_property_ui_text(prop, "Vertices", "Vertices of the mesh.");
|
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");
|
|
|
|
RNA_def_property_ui_text(prop, "Edges", "Edges of the mesh.");
|
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");
|
|
|
|
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
|
|
|
|
|
|
|
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");
|
2009-01-02 14:48:03 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Sticky", "Sticky texture coordinates.");
|
2008-11-24 12:12:24 +00:00
|
|
|
|
2009-10-07 09:23:29 +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");
|
2009-10-14 13:20:20 +00:00
|
|
|
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
|
2009-10-07 09:23:29 +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
|
|
|
|
2009-10-07 09:23:29 +00:00
|
|
|
/* UV textures */
|
2009-07-01 22:25:49 +00:00
|
|
|
prop= RNA_def_property(srna, "uv_textures", PROP_COLLECTION, PROP_NONE);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
|
2009-11-13 16:08:03 +00:00
|
|
|
RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_textures_begin", 0, 0, 0, "rna_Mesh_uv_textures_length", 0, 0);
|
2009-01-02 14:48:03 +00:00
|
|
|
RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
|
2009-07-01 22:25:49 +00:00
|
|
|
RNA_def_property_ui_text(prop, "UV Textures", "");
|
2008-11-24 12:12:24 +00:00
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
prop= RNA_def_property(srna, "active_uv_texture", PROP_POINTER, PROP_UNSIGNED);
|
2009-06-27 01:10:39 +00:00
|
|
|
RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
|
2009-07-01 22:25:49 +00:00
|
|
|
RNA_def_property_pointer_funcs(prop, "rna_Mesh_active_uv_texture_get", "rna_Mesh_active_uv_texture_set", NULL);
|
2009-06-27 01:10:39 +00:00
|
|
|
RNA_def_property_flag(prop, PROP_EDITABLE);
|
2009-07-01 22:25:49 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Active UV Texture", "Active UV texture.");
|
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "active_uv_texture_index", PROP_INT, PROP_UNSIGNED);
|
|
|
|
RNA_def_property_int_funcs(prop, "rna_Mesh_active_uv_texture_index_get", "rna_Mesh_active_uv_texture_index_set", "rna_Mesh_active_uv_texture_index_range");
|
|
|
|
RNA_def_property_ui_text(prop, "Active UV Texture Index", "Active UV texture index.");
|
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
|
2009-06-27 01:10:39 +00:00
|
|
|
|
2009-12-22 10:48:13 +00:00
|
|
|
prop= RNA_def_property(srna, "uv_texture_clone", PROP_POINTER, PROP_UNSIGNED);
|
2009-11-24 00:56:52 +00:00
|
|
|
RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
|
2009-12-22 10:48:13 +00:00
|
|
|
RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_texture_clone_get", "rna_Mesh_uv_texture_clone_set", NULL);
|
2009-11-24 00:56:52 +00:00
|
|
|
RNA_def_property_flag(prop, PROP_EDITABLE);
|
|
|
|
RNA_def_property_ui_text(prop, "Clone UV Texture", "UV texture to be used as cloning source.");
|
|
|
|
|
2009-12-22 10:48:13 +00:00
|
|
|
prop= RNA_def_property(srna, "uv_texture_clone_index", PROP_INT, PROP_UNSIGNED);
|
|
|
|
RNA_def_property_int_funcs(prop, "rna_Mesh_uv_texture_clone_index_get", "rna_Mesh_uv_texture_clone_index_set", "rna_Mesh_active_uv_texture_index_range");
|
2009-11-24 00:56:52 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Clone UV Texture Index", "Clone UV texture index.");
|
2009-12-22 10:48:13 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "uv_texture_stencil", PROP_POINTER, PROP_UNSIGNED);
|
|
|
|
RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
|
|
|
|
RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_texture_stencil_get", "rna_Mesh_uv_texture_stencil_set", NULL);
|
|
|
|
RNA_def_property_flag(prop, PROP_EDITABLE);
|
|
|
|
RNA_def_property_ui_text(prop, "Mask UV Texture", "UV texture to mask the painted area.");
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "uv_texture_stencil_index", PROP_INT, PROP_UNSIGNED);
|
|
|
|
RNA_def_property_int_funcs(prop, "rna_Mesh_uv_texture_stencil_index_get", "rna_Mesh_uv_texture_stencil_index_set", "rna_Mesh_active_uv_texture_index_range");
|
|
|
|
RNA_def_property_ui_text(prop, "Mask UV Texture Index", "Mask UV texture index.");
|
2009-11-24 00:56:52 +00:00
|
|
|
|
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);
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
|
2009-11-13 16:08:03 +00:00
|
|
|
RNA_def_property_collection_funcs(prop, "rna_Mesh_vertex_colors_begin", 0, 0, 0, "rna_Mesh_vertex_colors_length", 0, 0);
|
2009-01-10 22:57:33 +00:00
|
|
|
RNA_def_property_struct_type(prop, "MeshColorLayer");
|
2009-07-01 22:25:49 +00:00
|
|
|
RNA_def_property_ui_text(prop, "Vertex Colors", "");
|
2008-11-24 12:12:24 +00:00
|
|
|
|
2009-07-01 22:25:49 +00:00
|
|
|
prop= RNA_def_property(srna, "active_vertex_color", PROP_POINTER, PROP_UNSIGNED);
|
2009-06-27 01:10:39 +00:00
|
|
|
RNA_def_property_struct_type(prop, "MeshColorLayer");
|
2009-07-01 22:25:49 +00:00
|
|
|
RNA_def_property_pointer_funcs(prop, "rna_Mesh_active_vertex_color_get", "rna_Mesh_active_vertex_color_set", NULL);
|
2009-06-27 01:10:39 +00:00
|
|
|
RNA_def_property_flag(prop, PROP_EDITABLE);
|
|
|
|
RNA_def_property_ui_text(prop, "Active Vertex Color Layer", "Active vertex color layer.");
|
2009-07-01 22:25:49 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "active_vertex_color_index", PROP_INT, PROP_UNSIGNED);
|
|
|
|
RNA_def_property_int_funcs(prop, "rna_Mesh_active_vertex_color_index_get", "rna_Mesh_active_vertex_color_index_set", "rna_Mesh_active_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");
|
2009-06-27 01:10:39 +00:00
|
|
|
|
2008-11-24 12:12:24 +00:00
|
|
|
prop= RNA_def_property(srna, "float_layers", PROP_COLLECTION, PROP_NONE);
|
|
|
|
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
|
2009-11-13 16:08:03 +00:00
|
|
|
RNA_def_property_collection_funcs(prop, "rna_Mesh_float_layers_begin", 0, 0, 0, "rna_Mesh_float_layers_length", 0, 0);
|
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", "");
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "int_layers", PROP_COLLECTION, PROP_NONE);
|
|
|
|
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
|
2009-11-13 16:08:03 +00:00
|
|
|
RNA_def_property_collection_funcs(prop, "rna_Mesh_int_layers_begin", 0, 0, 0, "rna_Mesh_int_layers_length", 0, 0);
|
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", "");
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "string_layers", PROP_COLLECTION, PROP_NONE);
|
|
|
|
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
|
2009-11-13 16:08:03 +00:00
|
|
|
RNA_def_property_collection_funcs(prop, "rna_Mesh_string_layers_begin", 0, 0, 0, "rna_Mesh_string_layers_length", 0, 0);
|
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", "");
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "autosmooth", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
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");
|
|
|
|
|
2008-12-26 02:02:06 +00:00
|
|
|
prop= RNA_def_property(srna, "autosmooth_angle", PROP_INT, PROP_NONE);
|
|
|
|
RNA_def_property_int_sdna(prop, NULL, "smoothresh");
|
2008-11-24 12:12:24 +00:00
|
|
|
RNA_def_property_range(prop, 1, 80);
|
|
|
|
RNA_def_property_ui_text(prop, "Auto Smooth Angle", "Defines maximum angle between face normals that 'Auto Smooth' will operate on");
|
|
|
|
|
2008-12-03 20:17:12 +00:00
|
|
|
prop= RNA_def_property(srna, "vertex_normal_flip", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ME_NOPUNOFLIP);
|
|
|
|
RNA_def_property_ui_text(prop, "Vertex Normal Flip", "Flip vertex normals towards the camera during render");
|
2008-11-24 12:12:24 +00:00
|
|
|
|
2008-12-02 23:45:11 +00:00
|
|
|
prop= RNA_def_property(srna, "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
|
|
|
|
|
|
|
/* Mesh Draw Options for Edit Mode*/
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_edges", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWEDGES);
|
|
|
|
RNA_def_property_ui_text(prop, "Draw Edges", "Displays selected edges using hilights in the 3d view and UV editor");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
2009-10-13 17:49:05 +00:00
|
|
|
prop= RNA_def_property(srna, "all_edges", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_ALLEDGES);
|
|
|
|
RNA_def_property_ui_text(prop, "All Edges", "Displays all edges for wireframe in all view modes in the 3d view");
|
|
|
|
|
2009-08-06 23:34:14 +00:00
|
|
|
prop= RNA_def_property(srna, "draw_faces", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWFACES);
|
|
|
|
RNA_def_property_ui_text(prop, "Draw Faces", "Displays all faces as shades in the 3d view and UV editor");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_normals", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWNORMALS);
|
|
|
|
RNA_def_property_ui_text(prop, "Draw Normals", "Displays face normals as lines");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_vertex_normals", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_creases", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWCREASES);
|
|
|
|
RNA_def_property_ui_text(prop, "Draw Creases", "Displays creases created for subsurf weighting");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_bevel_weights", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_seams", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWSEAMS);
|
|
|
|
RNA_def_property_ui_text(prop, "Draw Seams", "Displays UV unwrapping seams");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_sharp", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
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");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-10-13 17:49:05 +00:00
|
|
|
|
2009-08-06 23:34:14 +00:00
|
|
|
prop= RNA_def_property(srna, "draw_edge_lenght", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_EDGELEN);
|
|
|
|
RNA_def_property_ui_text(prop, "Edge Length", "Displays selected edge lengths");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_edge_angle", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_EDGEANG);
|
|
|
|
RNA_def_property_ui_text(prop, "Edge Angles", "Displays the angles in the selected edges in degrees");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-08-06 23:34:14 +00:00
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "draw_face_area", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_FACEAREA);
|
|
|
|
RNA_def_property_ui_text(prop, "Face Area", "Displays the area of selected faces");
|
2.5
Notifiers
---------
Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:
* Geometry changes are now done with NC_GEOM, rather than
NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
should only be used for notifying about changes in space data,
we don't want to go back to allqueue(REDRAW..).
Depsgraph
---------
The dependency graph now has a different flush call:
DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)
It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.
Docs
----
I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2008-12-02 23:45:11 +00:00
|
|
|
|
2009-10-14 14:28: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-10-20 19:27:27 +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);
|
|
|
|
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
|
2009-10-20 19:27:27 +00:00
|
|
|
|
|
|
|
|
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);
|
|
|
|
rna_def_mtface(brna);
|
|
|
|
rna_def_msticky(brna);
|
|
|
|
rna_def_mcol(brna);
|
|
|
|
rna_def_mproperties(brna);
|
2008-11-07 02:58:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|