forked from bartvdbraak/blender
World.c
* moved to getseters with id attribs * added 2x missing checks for list size when parsing args. Text3d.c * use getseters with id attribs * added a comparison function
This commit is contained in:
parent
0bd2d0ff45
commit
ebc042a808
@ -200,9 +200,7 @@ static PyMethodDef BPy_Camera_methods[] = {
|
||||
/* Python Camera_Type callback function prototypes: */
|
||||
/*****************************************************************************/
|
||||
static void Camera_dealloc( BPy_Camera * self );
|
||||
//static int Camera_setAttr( BPy_Camera * self, char *name, PyObject * v );
|
||||
static int Camera_compare( BPy_Camera * a, BPy_Camera * b );
|
||||
//static PyObject *Camera_getAttr( BPy_Camera * self, char *name );
|
||||
static PyObject *Camera_repr( BPy_Camera * self );
|
||||
|
||||
static PyObject *M_Camera_New( PyObject * self, PyObject * args,
|
||||
|
@ -81,9 +81,10 @@ struct PyMethodDef M_Text3d_methods[] = {
|
||||
/*****************************************************************************/
|
||||
/* int Text3dPrint (BPy_Text3d *msh, FILE *fp, int flags); */
|
||||
static void Text3dDeAlloc( BPy_Text3d * self );
|
||||
static int Text3dSetAttr( BPy_Text3d * self, char *name, PyObject * value );
|
||||
static PyObject *Text3dGetAttr( BPy_Text3d * self, char *name );
|
||||
static PyObject *Text3dRepr( BPy_Text3d * self );
|
||||
|
||||
|
||||
static PyObject *Text3d_repr( BPy_Text3d * self );
|
||||
static int Text3d_compare( BPy_Text3d * a, BPy_Text3d * b );
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Python BPy_Text3d methods declarations: */
|
||||
@ -202,6 +203,14 @@ static PyMethodDef BPy_Text3d_methods[] = {
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Python attributes get/set structure: */
|
||||
/*****************************************************************************/
|
||||
static PyGetSetDef BPy_Text3d_getseters[] = {
|
||||
GENERIC_LIB_GETSETATTR, /* didnt have any attributes, at least lets have the standard ID attrs */
|
||||
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Python Text3d_Type structure definition: */
|
||||
/*****************************************************************************/
|
||||
@ -213,22 +222,77 @@ PyTypeObject Text3d_Type = {
|
||||
0, /* tp_itemsize */
|
||||
/* methods */
|
||||
( destructor ) Text3dDeAlloc, /* tp_dealloc */
|
||||
0, /* tp_print */
|
||||
( getattrfunc ) Text3dGetAttr, /* tp_getattr */
|
||||
( setattrfunc ) Text3dSetAttr, /* tp_setattr */
|
||||
0, /* tp_compare */
|
||||
( reprfunc ) Text3dRepr, /* tp_repr */
|
||||
0, /* tp_as_number */
|
||||
0, /* tp_as_sequence */
|
||||
0, /* tp_as_mapping */
|
||||
0, /* tp_as_hash */
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, /* tp_doc */
|
||||
0, 0, 0, 0, 0, 0,
|
||||
BPy_Text3d_methods, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
NULL, /* tp_print */
|
||||
NULL, /* tp_getattr */
|
||||
NULL, /* tp_setattr */
|
||||
( cmpfunc ) Text3d_compare, /* tp_compare */
|
||||
( reprfunc ) Text3d_repr, /* tp_repr */
|
||||
/* Method suites for standard classes */
|
||||
|
||||
NULL, /* PyNumberMethods *tp_as_number; */
|
||||
NULL, /* PySequenceMethods *tp_as_sequence; */
|
||||
NULL, /* PyMappingMethods *tp_as_mapping; */
|
||||
|
||||
/* More standard operations (here for binary compatibility) */
|
||||
|
||||
NULL, /* hashfunc tp_hash; */
|
||||
NULL, /* ternaryfunc tp_call; */
|
||||
NULL, /* reprfunc tp_str; */
|
||||
NULL, /* getattrofunc tp_getattro; */
|
||||
NULL, /* setattrofunc tp_setattro; */
|
||||
|
||||
/* Functions to access object as input/output buffer */
|
||||
NULL, /* PyBufferProcs *tp_as_buffer; */
|
||||
|
||||
/*** Flags to define presence of optional/expanded features ***/
|
||||
Py_TPFLAGS_DEFAULT, /* long tp_flags; */
|
||||
|
||||
NULL, /* char *tp_doc; Documentation string */
|
||||
/*** Assigned meaning in release 2.0 ***/
|
||||
/* call function for all accessible objects */
|
||||
NULL, /* traverseproc tp_traverse; */
|
||||
|
||||
/* delete references to contained objects */
|
||||
NULL, /* inquiry tp_clear; */
|
||||
|
||||
/*** Assigned meaning in release 2.1 ***/
|
||||
/*** rich comparisons ***/
|
||||
NULL, /* richcmpfunc tp_richcompare; */
|
||||
|
||||
/*** weak reference enabler ***/
|
||||
0, /* long tp_weaklistoffset; */
|
||||
|
||||
/*** Added in release 2.2 ***/
|
||||
/* Iterators */
|
||||
NULL, /* getiterfunc tp_iter; */
|
||||
NULL, /* iternextfunc tp_iternext; */
|
||||
|
||||
/*** Attribute descriptor and subclassing stuff ***/
|
||||
BPy_Text3d_methods, /* struct PyMethodDef *tp_methods; */
|
||||
NULL, /* struct PyMemberDef *tp_members; */
|
||||
BPy_Text3d_getseters, /* struct PyGetSetDef *tp_getset; */
|
||||
NULL, /* struct _typeobject *tp_base; */
|
||||
NULL, /* PyObject *tp_dict; */
|
||||
NULL, /* descrgetfunc tp_descr_get; */
|
||||
NULL, /* descrsetfunc tp_descr_set; */
|
||||
0, /* long tp_dictoffset; */
|
||||
NULL, /* initproc tp_init; */
|
||||
NULL, /* allocfunc tp_alloc; */
|
||||
NULL, /* newfunc tp_new; */
|
||||
/* Low-level free-memory routine */
|
||||
NULL, /* freefunc tp_free; */
|
||||
/* For PyObject_IS_GC */
|
||||
NULL, /* inquiry tp_is_gc; */
|
||||
NULL, /* PyObject *tp_bases; */
|
||||
/* method resolution order */
|
||||
NULL, /* PyObject *tp_mro; */
|
||||
NULL, /* PyObject *tp_cache; */
|
||||
NULL, /* PyObject *tp_subclasses; */
|
||||
NULL, /* PyObject *tp_weaklist; */
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Text3d_update( )
|
||||
* method to update display list for a Curve.
|
||||
@ -369,7 +433,9 @@ PyObject *Text3d_Init( void )
|
||||
PyObject *submodule, *dict;
|
||||
|
||||
//add module...
|
||||
Text3d_Type.ob_type = &PyType_Type;
|
||||
if( PyType_Ready( &Text3d_Type ) < 0 )
|
||||
return NULL;
|
||||
|
||||
submodule = Py_InitModule3( "Blender.Text3d", M_Text3d_methods,
|
||||
M_Text3D_doc);
|
||||
|
||||
@ -400,44 +466,31 @@ static void Text3dDeAlloc( BPy_Text3d * self )
|
||||
PyObject_DEL( self );
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Function: Text3dGetAttr */
|
||||
/* Description: This is a callback function for the BPy_Text3d type. It is */
|
||||
/* the function that accesses BPy_Text3d "member variables" and */
|
||||
/* methods. */
|
||||
/*****************************************************************************/
|
||||
static PyObject *Text3dGetAttr( BPy_Text3d * self, char *name )
|
||||
{
|
||||
return Py_FindMethod( BPy_Text3d_methods, ( PyObject * ) self, name );
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* Function: Text3dSetAttr
|
||||
* Description: Callback function for the BPy_Effect type to
|
||||
* sets Text3d Data attributes (member variables).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int Text3dSetAttr( BPy_Text3d * self, char *name, PyObject * value )
|
||||
{
|
||||
return 0; /* normal exit */
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Function: Text3dRepr
|
||||
* Function: Text3d_repr
|
||||
* Description: Callback function for the BPy_Text3d type to It
|
||||
* build a meaninful string to represent Text3d objects.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
static PyObject *Text3dRepr( BPy_Text3d * self )
|
||||
static PyObject *Text3d_repr( BPy_Text3d * self )
|
||||
{
|
||||
/* skip over CU in idname. CUTEXT */
|
||||
return PyString_FromFormat( "[Text3d \"%s\"]",
|
||||
self->curve->id.name + 2 );
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Function: Text3d_compare
|
||||
* Description: Callback function for the BPy_Text3d type to Compare 2 types
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/* mat_a==mat_b or mat_a!=mat_b*/
|
||||
static int Text3d_compare( BPy_Text3d * a, BPy_Text3d * b )
|
||||
{
|
||||
return ( a->curve == b->curve) ? 0 : -1;
|
||||
}
|
||||
|
||||
|
||||
int Text3d_CheckPyObject( PyObject * py_obj )
|
||||
|
@ -70,25 +70,34 @@
|
||||
static PyObject *World_getRange( BPy_World * self );
|
||||
static PyObject *World_setRange( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getIpo( BPy_World * self );
|
||||
static PyObject *World_setIpo( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetIpo( BPy_World * self, PyObject * args );
|
||||
static int World_setIpo( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_clearIpo( BPy_World * self );
|
||||
static PyObject *World_insertIpoKey( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getMode( BPy_World * self );
|
||||
static PyObject *World_setMode( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetMode( BPy_World * self, PyObject * args );
|
||||
static int World_setMode( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getSkytype( BPy_World * self );
|
||||
static PyObject *World_setSkytype( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetSkytype( BPy_World * self, PyObject * args );
|
||||
static int World_setSkytype( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getMistype( BPy_World * self );
|
||||
static PyObject *World_setMistype( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetMistype( BPy_World * self, PyObject * args );
|
||||
static int World_setMistype( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getHor( BPy_World * self );
|
||||
static PyObject *World_setHor( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetHor( BPy_World * self, PyObject * args );
|
||||
static int World_setHor( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getZen( BPy_World * self );
|
||||
static PyObject *World_setZen( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetZen( BPy_World * self, PyObject * args );
|
||||
static int World_setZen( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getAmb( BPy_World * self );
|
||||
static PyObject *World_setAmb( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetAmb( BPy_World * self, PyObject * args );
|
||||
static int World_setAmb( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getStar( BPy_World * self );
|
||||
static PyObject *World_setStar( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetStar( BPy_World * self, PyObject * args );
|
||||
static int World_setStar( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getMist( BPy_World * self );
|
||||
static PyObject *World_setMist( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_oldsetMist( BPy_World * self, PyObject * args );
|
||||
static int World_setMist( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_getScriptLinks( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_addScriptLink( BPy_World * self, PyObject * args );
|
||||
static PyObject *World_clearScriptLinks( BPy_World * self, PyObject * args );
|
||||
@ -110,9 +119,7 @@ static PyObject *M_World_GetCurrent( PyObject * self );
|
||||
/*****************************************************************************/
|
||||
static void World_DeAlloc( BPy_World * self );
|
||||
//static int World_Print (BPy_World *self, FILE *fp, int flags);
|
||||
static int World_SetAttr( BPy_World * self, char *name, PyObject * v );
|
||||
static int World_Compare( BPy_World * a, BPy_World * b );
|
||||
static PyObject *World_GetAttr( BPy_World * self, char *name );
|
||||
static PyObject *World_Repr( BPy_World * self );
|
||||
|
||||
|
||||
@ -163,7 +170,7 @@ static PyMethodDef BPy_World_methods[] = {
|
||||
"() - Change this World's range"},
|
||||
{"getIpo", ( PyCFunction ) World_getIpo, METH_NOARGS,
|
||||
"() - Return World Ipo"},
|
||||
{"setIpo", ( PyCFunction ) World_setIpo, METH_VARARGS,
|
||||
{"setIpo", ( PyCFunction ) World_oldsetIpo, METH_VARARGS,
|
||||
"() - Change this World's ipo"},
|
||||
{"clearIpo", ( PyCFunction ) World_clearIpo, METH_VARARGS,
|
||||
"() - Unlink Ipo from this World"},
|
||||
@ -173,35 +180,35 @@ static PyMethodDef BPy_World_methods[] = {
|
||||
"() - Set World Data name"},
|
||||
{"getMode", ( PyCFunction ) World_getMode, METH_NOARGS,
|
||||
"() - Return World Data mode"},
|
||||
{"setMode", ( PyCFunction ) World_setMode, METH_VARARGS,
|
||||
{"setMode", ( PyCFunction ) World_oldsetMode, METH_VARARGS,
|
||||
"(i) - Set World Data mode"},
|
||||
{"getSkytype", ( PyCFunction ) World_getSkytype, METH_NOARGS,
|
||||
"() - Return World Data skytype"},
|
||||
{"setSkytype", ( PyCFunction ) World_setSkytype, METH_VARARGS,
|
||||
{"setSkytype", ( PyCFunction ) World_oldsetSkytype, METH_VARARGS,
|
||||
"() - Return World Data skytype"},
|
||||
{"getMistype", ( PyCFunction ) World_getMistype, METH_NOARGS,
|
||||
"() - Return World Data mistype"},
|
||||
{"setMistype", ( PyCFunction ) World_setMistype, METH_VARARGS,
|
||||
{"setMistype", ( PyCFunction ) World_oldsetMistype, METH_VARARGS,
|
||||
"() - Return World Data mistype"},
|
||||
{"getHor", ( PyCFunction ) World_getHor, METH_NOARGS,
|
||||
"() - Return World Data hor"},
|
||||
{"setHor", ( PyCFunction ) World_setHor, METH_VARARGS,
|
||||
{"setHor", ( PyCFunction ) World_oldsetHor, METH_VARARGS,
|
||||
"() - Return World Data hor"},
|
||||
{"getZen", ( PyCFunction ) World_getZen, METH_NOARGS,
|
||||
"() - Return World Data zen"},
|
||||
{"setZen", ( PyCFunction ) World_setZen, METH_VARARGS,
|
||||
{"setZen", ( PyCFunction ) World_oldsetZen, METH_VARARGS,
|
||||
"() - Return World Data zen"},
|
||||
{"getAmb", ( PyCFunction ) World_getAmb, METH_NOARGS,
|
||||
"() - Return World Data amb"},
|
||||
{"setAmb", ( PyCFunction ) World_setAmb, METH_VARARGS,
|
||||
{"setAmb", ( PyCFunction ) World_oldsetAmb, METH_VARARGS,
|
||||
"() - Return World Data amb"},
|
||||
{"getStar", ( PyCFunction ) World_getStar, METH_NOARGS,
|
||||
"() - Return World Data star"},
|
||||
{"setStar", ( PyCFunction ) World_setStar, METH_VARARGS,
|
||||
{"setStar", ( PyCFunction ) World_oldsetStar, METH_VARARGS,
|
||||
"() - Return World Data star"},
|
||||
{"getMist", ( PyCFunction ) World_getMist, METH_NOARGS,
|
||||
"() - Return World Data mist"},
|
||||
{"setMist", ( PyCFunction ) World_setMist, METH_VARARGS,
|
||||
{"setMist", ( PyCFunction ) World_oldsetMist, METH_VARARGS,
|
||||
"() - Return World Data mist"},
|
||||
{"getScriptLinks", ( PyCFunction ) World_getScriptLinks, METH_VARARGS,
|
||||
"(eventname) - Get a list of this world's scriptlinks (Text names) "
|
||||
@ -226,6 +233,27 @@ static PyMethodDef BPy_World_methods[] = {
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Python attributes get/set structure: */
|
||||
/*****************************************************************************/
|
||||
static PyGetSetDef BPy_World_getseters[] = {
|
||||
GENERIC_LIB_GETSETATTR,
|
||||
{"skytype", (getter)World_getSkytype, (setter)World_setSkytype,
|
||||
"sky settings as a list", NULL},
|
||||
{"mode", (getter)World_getMode, (setter)World_setMode,
|
||||
"world mode", NULL},
|
||||
{"mistype", (getter)World_getMistype, (setter)World_setMistype,
|
||||
"world mist type", NULL},
|
||||
{"hor", (getter)World_getHor, (setter)World_setHor,
|
||||
"world horizon color", NULL},
|
||||
{"amb", (getter)World_getAmb, (setter)World_setAmb,
|
||||
"world ambient color", NULL},
|
||||
{"mist", (getter)World_getMist, (setter)World_setMist,
|
||||
"world mist settings", NULL},
|
||||
{"ipo", (getter)World_getIpo, (setter)World_setIpo,
|
||||
"world ipo", NULL},
|
||||
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Python World_Type structure definition: */
|
||||
@ -239,20 +267,74 @@ PyTypeObject World_Type = {
|
||||
/* methods */
|
||||
( destructor ) World_DeAlloc, /* tp_dealloc */
|
||||
0, /* tp_print */
|
||||
( getattrfunc ) World_GetAttr, /* tp_getattr */
|
||||
( setattrfunc ) World_SetAttr, /* tp_setattr */
|
||||
NULL, /* tp_getattr */
|
||||
NULL, /* tp_setattr */
|
||||
( cmpfunc ) World_Compare, /* tp_compare */
|
||||
( reprfunc ) World_Repr, /* tp_repr */
|
||||
0, /* tp_as_number */
|
||||
0, /* tp_as_sequence */
|
||||
0, /* tp_as_mapping */
|
||||
0, /* tp_as_hash */
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, /* tp_doc */
|
||||
0, 0, 0, 0, 0, 0,
|
||||
BPy_World_methods, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
||||
/* Method suites for standard classes */
|
||||
|
||||
NULL, /* PyNumberMethods *tp_as_number; */
|
||||
NULL, /* PySequenceMethods *tp_as_sequence; */
|
||||
NULL, /* PyMappingMethods *tp_as_mapping; */
|
||||
|
||||
/* More standard operations (here for binary compatibility) */
|
||||
|
||||
NULL, /* hashfunc tp_hash; */
|
||||
NULL, /* ternaryfunc tp_call; */
|
||||
NULL, /* reprfunc tp_str; */
|
||||
NULL, /* getattrofunc tp_getattro; */
|
||||
NULL, /* setattrofunc tp_setattro; */
|
||||
|
||||
/* Functions to access object as input/output buffer */
|
||||
NULL, /* PyBufferProcs *tp_as_buffer; */
|
||||
|
||||
/*** Flags to define presence of optional/expanded features ***/
|
||||
Py_TPFLAGS_DEFAULT, /* long tp_flags; */
|
||||
|
||||
NULL, /* char *tp_doc; Documentation string */
|
||||
/*** Assigned meaning in release 2.0 ***/
|
||||
/* call function for all accessible objects */
|
||||
NULL, /* traverseproc tp_traverse; */
|
||||
|
||||
/* delete references to contained objects */
|
||||
NULL, /* inquiry tp_clear; */
|
||||
|
||||
/*** Assigned meaning in release 2.1 ***/
|
||||
/*** rich comparisons ***/
|
||||
NULL, /* richcmpfunc tp_richcompare; */
|
||||
|
||||
/*** weak reference enabler ***/
|
||||
0, /* long tp_weaklistoffset; */
|
||||
|
||||
/*** Added in release 2.2 ***/
|
||||
/* Iterators */
|
||||
NULL, /* getiterfunc tp_iter; */
|
||||
NULL, /* iternextfunc tp_iternext; */
|
||||
|
||||
/*** Attribute descriptor and subclassing stuff ***/
|
||||
BPy_World_methods, /* struct PyMethodDef *tp_methods; */
|
||||
NULL, /* struct PyMemberDef *tp_members; */
|
||||
BPy_World_getseters, /* struct PyGetSetDef *tp_getset; */
|
||||
NULL, /* struct _typeobject *tp_base; */
|
||||
NULL, /* PyObject *tp_dict; */
|
||||
NULL, /* descrgetfunc tp_descr_get; */
|
||||
NULL, /* descrsetfunc tp_descr_set; */
|
||||
0, /* long tp_dictoffset; */
|
||||
NULL, /* initproc tp_init; */
|
||||
NULL, /* allocfunc tp_alloc; */
|
||||
NULL, /* newfunc tp_new; */
|
||||
/* Low-level free-memory routine */
|
||||
NULL, /* freefunc tp_free; */
|
||||
/* For PyObject_IS_GC */
|
||||
NULL, /* inquiry tp_is_gc; */
|
||||
NULL, /* PyObject *tp_bases; */
|
||||
/* method resolution order */
|
||||
NULL, /* PyObject *tp_mro; */
|
||||
NULL, /* PyObject *tp_cache; */
|
||||
NULL, /* PyObject *tp_subclasses; */
|
||||
NULL, /* PyObject *tp_weaklist; */
|
||||
NULL
|
||||
};
|
||||
|
||||
/**
|
||||
@ -331,31 +413,21 @@ static PyObject *M_World_Get( PyObject * self, PyObject * args )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
"expected string argument (or nothing)" ) );
|
||||
|
||||
world_iter = G.main->world.first;
|
||||
|
||||
if( name ) { /* (name) - Search world by name */
|
||||
while( ( world_iter ) && ( wanted_world == NULL ) ) {
|
||||
if( strcmp( name, world_iter->id.name + 2 ) == 0 ) {
|
||||
wanted_world =
|
||||
( BPy_World * )
|
||||
PyObject_NEW( BPy_World, &World_Type );
|
||||
if( wanted_world )
|
||||
wanted_world->world = world_iter;
|
||||
}
|
||||
world_iter = world_iter->id.next;
|
||||
}
|
||||
|
||||
if( wanted_world == NULL ) { /* Requested world doesn't exist */
|
||||
world_iter = ( World * ) GetIdFromList( &( G.main->world ), name );
|
||||
|
||||
if( world_iter == NULL ) { /* Requested world doesn't exist */
|
||||
PyOS_snprintf( error_msg, sizeof( error_msg ),
|
||||
"World \"%s\" not found", name );
|
||||
return ( EXPP_ReturnPyObjError
|
||||
( PyExc_NameError, error_msg ) );
|
||||
}
|
||||
|
||||
return ( PyObject * ) wanted_world;
|
||||
return ( PyObject * ) World_CreatePyObject(world_iter);
|
||||
}
|
||||
|
||||
else { /* return a list of all worlds in the scene */
|
||||
world_iter = G.main->world.first;
|
||||
worldlist = PyList_New( 0 );
|
||||
if( worldlist == NULL )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_MemoryError,
|
||||
@ -403,7 +475,8 @@ PyObject *World_Init( void )
|
||||
{
|
||||
PyObject *submodule;
|
||||
|
||||
World_Type.ob_type = &PyType_Type;
|
||||
if( PyType_Ready( &World_Type ) < 0 )
|
||||
return NULL;
|
||||
|
||||
submodule = Py_InitModule3( "Blender.World",
|
||||
M_World_methods, M_World_doc );
|
||||
@ -418,7 +491,6 @@ PyObject *World_Init( void )
|
||||
return ( submodule );
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Python BPy_World methods: */
|
||||
/*****************************************************************************/
|
||||
@ -448,24 +520,23 @@ static PyObject *World_getIpo( BPy_World * self )
|
||||
return Ipo_CreatePyObject( ipo );
|
||||
}
|
||||
|
||||
static PyObject *World_setIpo( BPy_World * self, PyObject * args )
|
||||
static int World_setIpo( BPy_World * self, PyObject * value )
|
||||
{
|
||||
PyObject *pyipo = 0;
|
||||
Ipo *ipo = NULL;
|
||||
Ipo *oldipo;
|
||||
|
||||
if( !PyArg_ParseTuple( args, "O!", &Ipo_Type, &pyipo ) )
|
||||
return EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
if( !BPy_Ipo_Check(value) )
|
||||
return EXPP_ReturnIntError( PyExc_TypeError,
|
||||
"expected Ipo as argument" );
|
||||
|
||||
ipo = Ipo_FromPyObject( pyipo );
|
||||
ipo = Ipo_FromPyObject( value );
|
||||
|
||||
if( !ipo )
|
||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
return EXPP_ReturnIntError( PyExc_RuntimeError,
|
||||
"null ipo!" );
|
||||
|
||||
if( ipo->blocktype != ID_WO )
|
||||
return EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
return EXPP_ReturnIntError( PyExc_TypeError,
|
||||
"this ipo is not a World type ipo" );
|
||||
|
||||
oldipo = self->world->ipo;
|
||||
@ -479,7 +550,12 @@ static PyObject *World_setIpo( BPy_World * self, PyObject * args )
|
||||
|
||||
self->world->ipo = ipo;
|
||||
|
||||
Py_RETURN_NONE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *World_oldsetIpo( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setIpo );
|
||||
}
|
||||
|
||||
static PyObject *World_clearIpo( BPy_World * self )
|
||||
@ -523,15 +599,18 @@ static PyObject *World_getSkytype( BPy_World * self )
|
||||
* \return int : The World Data skytype.
|
||||
*/
|
||||
|
||||
static PyObject *World_setSkytype( BPy_World * self, PyObject * args )
|
||||
static int World_setSkytype( BPy_World * self, PyObject * value )
|
||||
{
|
||||
int skytype;
|
||||
|
||||
if( !PyArg_ParseTuple( args, "i", &skytype ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
if( !PyInt_CheckExact(value) )
|
||||
return ( EXPP_ReturnIntError( PyExc_TypeError,
|
||||
"expected int argument" ) );
|
||||
self->world->skytype = (short)skytype;
|
||||
Py_RETURN_NONE;
|
||||
self->world->skytype = (short)PyInt_AsLong(value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *World_oldsetSkytype( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setSkytype );
|
||||
}
|
||||
|
||||
|
||||
@ -559,27 +638,19 @@ static PyObject *World_getMode( BPy_World * self )
|
||||
* \return int : The World Data mode.
|
||||
*/
|
||||
|
||||
static PyObject *World_setMode( BPy_World * self, PyObject * args )
|
||||
static int World_setMode( BPy_World * self, PyObject * value )
|
||||
{
|
||||
int mode;
|
||||
|
||||
if( !PyArg_ParseTuple( args, "i", &mode ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
if( !PyInt_CheckExact(value) )
|
||||
return ( EXPP_ReturnIntError( PyExc_TypeError,
|
||||
"expected int argument" ) );
|
||||
self->world->mode = (short)mode;
|
||||
Py_RETURN_NONE;
|
||||
self->world->mode = (short)PyInt_AsLong(value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static PyObject *World_oldsetMode( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setMode );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -607,18 +678,19 @@ static PyObject *World_getMistype( BPy_World * self )
|
||||
* \return int : The World Data mistype.
|
||||
*/
|
||||
|
||||
static PyObject *World_setMistype( BPy_World * self, PyObject * args )
|
||||
static int World_setMistype( BPy_World * self, PyObject * value )
|
||||
{
|
||||
int mistype;
|
||||
|
||||
if( !PyArg_ParseTuple( args, "i", &mistype ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
if( !PyInt_CheckExact(value) )
|
||||
return ( EXPP_ReturnIntError( PyExc_TypeError,
|
||||
"expected int argument" ) );
|
||||
self->world->mistype = (short)mistype;
|
||||
Py_RETURN_NONE;
|
||||
self->world->mistype = (short)PyInt_AsLong(value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_oldsetMistype( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setMistype );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -635,18 +707,24 @@ static PyObject *World_getHor( BPy_World * self )
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_setHor( BPy_World * self, PyObject * args )
|
||||
static int World_setHor( BPy_World * self, PyObject * value )
|
||||
{
|
||||
PyObject *listargs = 0;
|
||||
if( !PyArg_ParseTuple( args, "O", &listargs ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
if( !PyList_Check( value ) )
|
||||
return ( EXPP_ReturnIntError( PyExc_TypeError,
|
||||
"expected list argument" ) );
|
||||
self->world->horr = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 0 ) );
|
||||
self->world->horg = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 1 ) );
|
||||
self->world->horb = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 2 ) );
|
||||
Py_RETURN_NONE;
|
||||
if( PyList_Size( value ) != 3 )
|
||||
return ( EXPP_ReturnIntError
|
||||
( PyExc_TypeError, "list size must be 3" ) );
|
||||
self->world->horr = (float)PyFloat_AsDouble( PyList_GetItem( value, 0 ) );
|
||||
self->world->horg = (float)PyFloat_AsDouble( PyList_GetItem( value, 1 ) );
|
||||
self->world->horb = (float)PyFloat_AsDouble( PyList_GetItem( value, 2 ) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *World_oldsetHor( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setHor );
|
||||
}
|
||||
|
||||
static PyObject *World_getZen( BPy_World * self )
|
||||
{
|
||||
@ -661,19 +739,24 @@ static PyObject *World_getZen( BPy_World * self )
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_setZen( BPy_World * self, PyObject * args )
|
||||
static int World_setZen( BPy_World * self, PyObject * value )
|
||||
{
|
||||
PyObject *listargs = 0;
|
||||
if( !PyArg_ParseTuple( args, "O", &listargs ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
if( !PyList_Check( value ) )
|
||||
return ( EXPP_ReturnIntError( PyExc_TypeError,
|
||||
"expected list argument" ) );
|
||||
self->world->zenr = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 0 ) );
|
||||
self->world->zeng = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 1 ) );
|
||||
self->world->zenb = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 2 ) );
|
||||
Py_RETURN_NONE;
|
||||
if( PyList_Size( value ) != 3 )
|
||||
return ( EXPP_ReturnIntError
|
||||
( PyExc_TypeError, "list size must be 3" ) );
|
||||
self->world->zenr = (float)PyFloat_AsDouble( PyList_GetItem( value, 0 ) );
|
||||
self->world->zeng = (float)PyFloat_AsDouble( PyList_GetItem( value, 1 ) );
|
||||
self->world->zenb = (float)PyFloat_AsDouble( PyList_GetItem( value, 2 ) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_oldsetZen( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setZen );
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_getAmb( BPy_World * self )
|
||||
@ -689,24 +772,24 @@ static PyObject *World_getAmb( BPy_World * self )
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_setAmb( BPy_World * self, PyObject * args )
|
||||
static int World_setAmb( BPy_World * self, PyObject * value )
|
||||
{
|
||||
PyObject *listargs = 0;
|
||||
if( !PyArg_ParseTuple( args, "O", &listargs ) )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
( PyExc_TypeError, "expected list argument" ) );
|
||||
if( !PyList_Check( listargs ) )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
( PyExc_TypeError, "expected list argument" ) );
|
||||
if( PyList_Size( listargs ) != 3 )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
if( !PyList_Check( value ) )
|
||||
return ( EXPP_ReturnIntError( PyExc_TypeError,
|
||||
"expected list argument" ) );
|
||||
if( PyList_Size( value ) != 3 )
|
||||
return ( EXPP_ReturnIntError
|
||||
( PyExc_TypeError, "wrong list size" ) );
|
||||
self->world->ambr = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 0 ) );
|
||||
self->world->ambg = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 1 ) );
|
||||
self->world->ambb = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 2 ) );
|
||||
Py_RETURN_NONE;
|
||||
self->world->ambr = (float)PyFloat_AsDouble( PyList_GetItem( value, 0 ) );
|
||||
self->world->ambg = (float)PyFloat_AsDouble( PyList_GetItem( value, 1 ) );
|
||||
self->world->ambb = (float)PyFloat_AsDouble( PyList_GetItem( value, 2 ) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *World_oldsetAmb( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setAmb );
|
||||
}
|
||||
|
||||
static PyObject *World_getStar( BPy_World * self )
|
||||
{
|
||||
@ -725,35 +808,32 @@ static PyObject *World_getStar( BPy_World * self )
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_setStar( BPy_World * self, PyObject * args )
|
||||
static int World_setStar( BPy_World * self, PyObject * value )
|
||||
{
|
||||
PyObject *listargs = 0;
|
||||
if( !PyArg_ParseTuple( args, "O", &listargs ) )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
if( !PyList_Check( value ) )
|
||||
return ( EXPP_ReturnIntError
|
||||
( PyExc_TypeError, "expected list argument" ) );
|
||||
if( !PyList_Check( listargs ) )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
( PyExc_TypeError, "expected list argument" ) );
|
||||
if( PyList_Size( listargs ) != 7 )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
if( PyList_Size( value ) != 7 )
|
||||
return ( EXPP_ReturnIntError
|
||||
( PyExc_TypeError, "wrong list size" ) );
|
||||
self->world->starr = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 0 ) );
|
||||
self->world->starg = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 1 ) );
|
||||
self->world->starb = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 2 ) );
|
||||
self->world->starr = (float)PyFloat_AsDouble( PyList_GetItem( value, 0 ) );
|
||||
self->world->starg = (float)PyFloat_AsDouble( PyList_GetItem( value, 1 ) );
|
||||
self->world->starb = (float)PyFloat_AsDouble( PyList_GetItem( value, 2 ) );
|
||||
self->world->starsize =
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( listargs, 3 ) );
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( value, 3 ) );
|
||||
self->world->starmindist =
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( listargs, 4 ) );
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( value, 4 ) );
|
||||
self->world->stardist =
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( listargs, 5 ) );
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( value, 5 ) );
|
||||
self->world->starcolnoise =
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( listargs, 6 ) );
|
||||
Py_RETURN_NONE;
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( value, 6 ) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static PyObject *World_oldsetStar( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setStar );
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_getMist( BPy_World * self )
|
||||
@ -770,28 +850,30 @@ static PyObject *World_getMist( BPy_World * self )
|
||||
}
|
||||
|
||||
|
||||
static PyObject *World_setMist( BPy_World * self, PyObject * args )
|
||||
static int World_setMist( BPy_World * self, PyObject * value )
|
||||
{
|
||||
PyObject *listargs = 0;
|
||||
if( !PyArg_ParseTuple( args, "O", &listargs ) )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
if( !PyList_Check( value ) )
|
||||
return ( EXPP_ReturnIntError
|
||||
( PyExc_TypeError, "expected list argument" ) );
|
||||
if( !PyList_Check( listargs ) )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
( PyExc_TypeError, "expected list argument" ) );
|
||||
if( PyList_Size( listargs ) != 4 )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
if( PyList_Size( value ) != 4 )
|
||||
return ( EXPP_ReturnIntError
|
||||
( PyExc_TypeError, "wrong list size" ) );
|
||||
self->world->misi = (float)PyFloat_AsDouble( PyList_GetItem( listargs, 0 ) );
|
||||
self->world->misi = (float)PyFloat_AsDouble( PyList_GetItem( value, 0 ) );
|
||||
self->world->miststa =
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( listargs, 1 ) );
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( value, 1 ) );
|
||||
self->world->mistdist =
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( listargs, 2 ) );
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( value, 2 ) );
|
||||
self->world->misthi =
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( listargs, 3 ) );
|
||||
Py_RETURN_NONE;
|
||||
(float)PyFloat_AsDouble( PyList_GetItem( value, 3 ) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *World_oldsetMist( BPy_World * self, PyObject * args )
|
||||
{
|
||||
return EXPP_setterWrapper( (void *)self, args, (setter)World_setMist );
|
||||
}
|
||||
|
||||
|
||||
/* world.addScriptLink */
|
||||
static PyObject *World_addScriptLink( BPy_World * self, PyObject * args )
|
||||
{
|
||||
@ -832,7 +914,6 @@ static PyObject *World_getScriptLinks( BPy_World * self, PyObject * args )
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* world.setCurrent */
|
||||
static PyObject *World_setCurrent( BPy_World * self )
|
||||
{
|
||||
@ -885,89 +966,6 @@ static void World_DeAlloc( BPy_World * self )
|
||||
PyObject_DEL( self );
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief The World PyType attribute getter
|
||||
*
|
||||
* This is the callback called when a user tries to retrieve the contents of
|
||||
* World PyObject data members. Ex. in Python: "print myworld.lens".
|
||||
*/
|
||||
|
||||
static PyObject *World_GetAttr( BPy_World * self, char *name )
|
||||
{
|
||||
|
||||
if( strcmp( name, "name" ) == 0 )
|
||||
return GenericLib_getName( self );
|
||||
if( strcmp( name, "lib" ) == 0 )
|
||||
return EXPP_GetIdLib((ID *)self->world);
|
||||
if( strcmp( name, "skytype" ) == 0 )
|
||||
return World_getSkytype( self );
|
||||
if( strcmp( name, "mode" ) == 0 )
|
||||
return World_getMode( self );
|
||||
if( strcmp( name, "mistype" ) == 0 )
|
||||
return World_getMistype( self );
|
||||
if( strcmp( name, "hor" ) == 0 )
|
||||
return World_getHor( self );
|
||||
if( strcmp( name, "zen" ) == 0 )
|
||||
return World_getZen( self );
|
||||
if( strcmp( name, "amb" ) == 0 )
|
||||
return World_getAmb( self );
|
||||
if( strcmp( name, "star" ) == 0 )
|
||||
return World_getStar( self );
|
||||
if( strcmp( name, "mist" ) == 0 )
|
||||
return World_getMist( self );
|
||||
if( strcmp( name, "users" ) == 0 )
|
||||
return PyInt_FromLong( self->world->id.us );
|
||||
return Py_FindMethod( BPy_World_methods, ( PyObject * ) self, name );
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief The World PyType attribute setter
|
||||
*
|
||||
* This is the callback called when the user tries to change the value of some
|
||||
* World data member. Ex. in Python: "myworld.lens = 45.0".
|
||||
*/
|
||||
|
||||
static int World_SetAttr( BPy_World * self, char *name, PyObject * value )
|
||||
{
|
||||
PyObject *error=NULL;
|
||||
PyObject *valtuple = Py_BuildValue( "(O)", value );
|
||||
|
||||
if( !valtuple )
|
||||
return EXPP_ReturnIntError( PyExc_MemoryError,
|
||||
"WorldSetAttr: couldn't parse args" );
|
||||
else if( strcmp( name, "name" ) == 0 )
|
||||
error = GenericLib_setName_with_method( self, valtuple );
|
||||
else if( strcmp( name, "skytype" ) == 0 )
|
||||
error = World_setSkytype( self, valtuple );
|
||||
else if( strcmp( name, "mode" ) == 0 )
|
||||
error = World_setMode( self, valtuple );
|
||||
else if( strcmp( name, "mistype" ) == 0 )
|
||||
error = World_setMistype( self, valtuple );
|
||||
else if( strcmp( name, "hor" ) == 0 )
|
||||
error = World_setHor( self, valtuple );
|
||||
else if( strcmp( name, "zen" ) == 0 )
|
||||
error = World_setZen( self, valtuple );
|
||||
else if( strcmp( name, "amb" ) == 0 )
|
||||
error = World_setAmb( self, valtuple );
|
||||
else if( strcmp( name, "star" ) == 0 )
|
||||
error = World_setStar( self, valtuple );
|
||||
else if( strcmp( name, "mist" ) == 0 )
|
||||
error = World_setMist( self, valtuple );
|
||||
else {
|
||||
Py_DECREF( valtuple );
|
||||
return ( EXPP_ReturnIntError( PyExc_KeyError,
|
||||
"attribute not found" ) );
|
||||
}
|
||||
|
||||
Py_DECREF(valtuple);
|
||||
|
||||
if( error != Py_None )
|
||||
return -1;
|
||||
|
||||
Py_DECREF( Py_None );
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief The World PyType compare function
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user