forked from bartvdbraak/blender
PyAPI, Mesh.c - added renderColorLayer and renderUVLayer to the mesh
buttons_editing.c - use icons for mesh viewport layer/render layer
This commit is contained in:
parent
c24aa10561
commit
d7235265fe
@ -6530,7 +6530,14 @@ static PyObject *Mesh_getColorLayerNames( BPy_Mesh * self )
|
|||||||
static PyObject *Mesh_getActiveLayer( BPy_Mesh * self, void *type )
|
static PyObject *Mesh_getActiveLayer( BPy_Mesh * self, void *type )
|
||||||
{
|
{
|
||||||
CustomData *data = &self->mesh->fdata;
|
CustomData *data = &self->mesh->fdata;
|
||||||
int i = CustomData_get_active_layer_index(data, (int)type);
|
int layer_type = (int)type;
|
||||||
|
int i;
|
||||||
|
if (layer_type < 0) { /* hack, if negative, its the renderlayer.*/
|
||||||
|
layer_type = -layer_type;
|
||||||
|
i = CustomData_get_render_layer_index(data, layer_type);
|
||||||
|
} else {
|
||||||
|
i = CustomData_get_active_layer_index(data, layer_type);
|
||||||
|
}
|
||||||
if (i == -1) /* so -1 is for no active layer 0+ for an active layer */
|
if (i == -1) /* so -1 is for no active layer 0+ for an active layer */
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
else {
|
else {
|
||||||
@ -6542,17 +6549,22 @@ static int Mesh_setActiveLayer( BPy_Mesh * self, PyObject * value, void *type )
|
|||||||
{
|
{
|
||||||
CustomData *data = &self->mesh->fdata;
|
CustomData *data = &self->mesh->fdata;
|
||||||
char *name;
|
char *name;
|
||||||
int i,ok,n;
|
int i,ok,n,layer_type = (int)type, render=0;
|
||||||
|
|
||||||
if( !PyString_Check( value ) )
|
if( !PyString_Check( value ) )
|
||||||
return EXPP_ReturnIntError( PyExc_ValueError,
|
return EXPP_ReturnIntError( PyExc_ValueError,
|
||||||
"expected a string argument" );
|
"expected a string argument" );
|
||||||
|
|
||||||
|
if (layer_type<0) {
|
||||||
|
layer_type = -layer_type;
|
||||||
|
render = 1;
|
||||||
|
}
|
||||||
|
|
||||||
name = PyString_AsString( value );
|
name = PyString_AsString( value );
|
||||||
ok = 0;
|
ok = 0;
|
||||||
n = 0;
|
n = 0;
|
||||||
for(i=0; i < data->totlayer; ++i) {
|
for(i=0; i < data->totlayer; ++i) {
|
||||||
if(data->layers[i].type == (int) type) {
|
if(data->layers[i].type == layer_type) {
|
||||||
if (strcmp(data->layers[i].name, name)==0) {
|
if (strcmp(data->layers[i].name, name)==0) {
|
||||||
ok = 1;
|
ok = 1;
|
||||||
break;
|
break;
|
||||||
@ -6564,9 +6576,12 @@ static int Mesh_setActiveLayer( BPy_Mesh * self, PyObject * value, void *type )
|
|||||||
if (!ok)
|
if (!ok)
|
||||||
return EXPP_ReturnIntError( PyExc_ValueError,
|
return EXPP_ReturnIntError( PyExc_ValueError,
|
||||||
"layer name does not exist" );
|
"layer name does not exist" );
|
||||||
|
if (render) {
|
||||||
CustomData_set_layer_active(data, (int)type, n);
|
CustomData_set_layer_render(data, layer_type, n);
|
||||||
|
} else {
|
||||||
|
CustomData_set_layer_active(data, layer_type, n);
|
||||||
mesh_update_customdata_pointers(self->mesh);
|
mesh_update_customdata_pointers(self->mesh);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7696,6 +7711,17 @@ static PyGetSetDef BPy_Mesh_getseters[] = {
|
|||||||
(getter)Mesh_getActiveLayer, (setter)Mesh_setActiveLayer,
|
(getter)Mesh_getActiveLayer, (setter)Mesh_setActiveLayer,
|
||||||
"Name of the active vertex color layer",
|
"Name of the active vertex color layer",
|
||||||
(void *)CD_MTFACE},
|
(void *)CD_MTFACE},
|
||||||
|
/* hack flip CD_MCOL so it uses the render setting */
|
||||||
|
{"renderColorLayer",
|
||||||
|
(getter)Mesh_getActiveLayer, (setter)Mesh_setActiveLayer,
|
||||||
|
"Name of the render UV layer",
|
||||||
|
(void *)-CD_MCOL},
|
||||||
|
{"renderUVLayer",
|
||||||
|
(getter)Mesh_getActiveLayer, (setter)Mesh_setActiveLayer,
|
||||||
|
"Name of the render vertex color layer",
|
||||||
|
(void *)-CD_MTFACE},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Multires */
|
/* Multires */
|
||||||
{"multiresLevelCount",
|
{"multiresLevelCount",
|
||||||
|
@ -778,6 +778,12 @@ class Mesh:
|
|||||||
|
|
||||||
B{Note}: After setting this value, call L{update} so the result can be seen the the 3d view.
|
B{Note}: After setting this value, call L{update} so the result can be seen the the 3d view.
|
||||||
@type activeColorLayer: string
|
@type activeColorLayer: string
|
||||||
|
|
||||||
|
@ivar renderUVLayer: The mesh's rendered UV/Image layer. None if there is no UV/Image layers.
|
||||||
|
@type renderUVLayer: string
|
||||||
|
@ivar renderColorLayer: The mesh's rendered Vertex Color layer. None if there is no UV/Image layers.
|
||||||
|
@type renderColorLayer: string
|
||||||
|
|
||||||
@ivar multires: The mesh has multires data, set True to add multires data.
|
@ivar multires: The mesh has multires data, set True to add multires data.
|
||||||
Will throw an exception if the mesh has shape keys; use L{key} to test.
|
Will throw an exception if the mesh has shape keys; use L{key} to test.
|
||||||
@type multires: bool
|
@type multires: bool
|
||||||
|
@ -800,8 +800,8 @@ static int customdata_buttons(
|
|||||||
*activep= layer->active + 1;
|
*activep= layer->active + 1;
|
||||||
*renderp= layer->active_rnd + 1;
|
*renderp= layer->active_rnd + 1;
|
||||||
|
|
||||||
uiDefButI(block, ROW, setevt, "A", x,y,25,19, activep, 1.0, count, 0, 0, browsetip);
|
uiDefIconButI(block, ROW, setevt, ICON_VIEW3D, x,y,25,19, activep, 1.0, count, 0, 0, browsetip);
|
||||||
uiDefButI(block, ROW, setevt_rnd, "R", x+25,y,25,19, renderp, 1.0, count, 0, 0, browsetip_rnd);
|
uiDefIconButI(block, ROW, setevt_rnd, ICON_SCENE, x+25,y,25,19, renderp, 1.0, count, 0, 0, browsetip_rnd);
|
||||||
but=uiDefBut(block, TEX, setevt, "", x+50,y,145,19, layer->name, 0.0, 31.0, 0, 0, label);
|
but=uiDefBut(block, TEX, setevt, "", x+50,y,145,19, layer->name, 0.0, 31.0, 0, 0, label);
|
||||||
uiButSetFunc(but, verify_customdata_name_func, data, layer);
|
uiButSetFunc(but, verify_customdata_name_func, data, layer);
|
||||||
but= uiDefIconBut(block, BUT, B_NOP, VICON_X, x+195,y,25,19, NULL, 0.0, 0.0, 0.0, 0.0, deltip);
|
but= uiDefIconBut(block, BUT, B_NOP, VICON_X, x+195,y,25,19, NULL, 0.0, 0.0, 0.0, 0.0, deltip);
|
||||||
|
Loading…
Reference in New Issue
Block a user