diff options
author | Ken Hughes <khughes@pacific.edu> | 2005-11-07 03:22:05 +0300 |
---|---|---|
committer | Ken Hughes <khughes@pacific.edu> | 2005-11-07 03:22:05 +0300 |
commit | 979c28bf06b53e1d87838e687d315e19df859940 (patch) | |
tree | 873a11a8e0db65207776255ef15096791d44d2f9 /source/blender/python/api2_2x/Effect.c | |
parent | 0089c0bc53f9ed69c3970ba648bb9b8d7ba13ffb (diff) |
-- Clean-up of Effect and Particle modules; since particle was the only
remaining effect type, it didn't make much sense to leave things
implemented in two separate files. Changes include:
* two bug fixes (the getChild() and getMat() methods were using floats
instead of shorts)
* performing clamping on input values
* implementing attributes using tp_getset
* merging Effect and Particle functions: the Particle module exists in
name only, with the Particle.New() and Particle.Get() functions
remaining for backward compatibility (they are in fact identical to
Effect.New() and Effect.Get() functions)
* update of doc/Effect.py (including remove all old references to wave
and build effects)
Diffstat (limited to 'source/blender/python/api2_2x/Effect.c')
-rw-r--r-- | source/blender/python/api2_2x/Effect.c | 1133 |
1 files changed, 1020 insertions, 113 deletions
diff --git a/source/blender/python/api2_2x/Effect.c b/source/blender/python/api2_2x/Effect.c index a3dd5b7640b..f161cfc86fb 100644 --- a/source/blender/python/api2_2x/Effect.c +++ b/source/blender/python/api2_2x/Effect.c @@ -25,7 +25,7 @@ * * This is a new part of Blender. * - * Contributor(s): Jacques Guignot, Jean-Michel Soler + * Contributor(s): Jacques Guignot, Jean-Michel Soler, Ken Hughes * * ***** END GPL/BL DUAL LICENSE BLOCK ***** */ @@ -36,60 +36,431 @@ #include "BKE_main.h" #include "BKE_effect.h" #include "BKE_object.h" -#include "Particle.h" +#include "BLI_blenlib.h" #include "gen_utils.h" +#include "blendef.h" + +#define EXPP_EFFECT_STA_MIN -250.0f +#define EXPP_EFFECT_END_MIN 1.0f +#define EXPP_EFFECT_LIFETIME_MIN 1.0f +#define EXPP_EFFECT_NORMFAC_MIN -2.0f +#define EXPP_EFFECT_NORMFAC_MAX 2.0f +#define EXPP_EFFECT_OBFAC_MIN -1.0f +#define EXPP_EFFECT_OBFAC_MAX 1.0f +#define EXPP_EFFECT_RANDFAC_MIN 0.0f +#define EXPP_EFFECT_RANDFAC_MAX 2.0f +#define EXPP_EFFECT_TEXFAC_MIN 0.0f +#define EXPP_EFFECT_TEXFAC_MAX 2.0f +#define EXPP_EFFECT_RANDLIFE_MIN 0.0f +#define EXPP_EFFECT_RANDLIFE_MAX 2.0f +#define EXPP_EFFECT_NABLA_MIN 0.0001f +#define EXPP_EFFECT_NABLA_MAX 1.0f +#define EXPP_EFFECT_VECTSIZE_MIN 0.0f +#define EXPP_EFFECT_VECTSIZE_MAX 1.0f +#define EXPP_EFFECT_TOTPART_MIN 1.0f +#define EXPP_EFFECT_TOTPART_MAX 100000.0f +#define EXPP_EFFECT_FORCE_MIN -1.0f +#define EXPP_EFFECT_FORCE_MAX 1.0f +#define EXPP_EFFECT_MULT_MIN 0.0f +#define EXPP_EFFECT_MULT_MAX 1.0f +#define EXPP_EFFECT_LIFE_MIN 1.0f +#define EXPP_EFFECT_DEFVEC_MIN -1.0f +#define EXPP_EFFECT_DEFVEC_MAX 1.0f + +#define EXPP_EFFECT_TOTKEY_MIN 1 +#define EXPP_EFFECT_TOTKEY_MAX 100 +#define EXPP_EFFECT_SEED_MIN 0 +#define EXPP_EFFECT_SEED_MAX 255 +#define EXPP_EFFECT_CHILD_MIN 1 +#define EXPP_EFFECT_CHILD_MAX 600 +#define EXPP_EFFECT_MAT_MIN 1 +#define EXPP_EFFECT_MAT_MAX 8 -PyObject *M_Particle_New( PyObject * self, PyObject * args ); -int ParticleSetAttr( BPy_Particle * msh, char *name, PyObject * v ); -PyObject *ParticleGetAttr( BPy_Particle * msh, char *name ); -PyObject *M_Effect_GetParticlesLoc( PyObject * self, PyObject * args ); +/*****************************************************************************/ +/* Python API function prototypes for the Blender module. */ +/*****************************************************************************/ +static PyObject *M_Effect_New( PyObject * self, PyObject * args ); +static PyObject *M_Effect_Get( PyObject * self, PyObject * args ); +static PyObject *M_Effect_GetParticlesLoc( PyObject * self, PyObject * args ); + +/*****************************************************************************/ +/* Python BPy_Effect methods declarations: */ +/*****************************************************************************/ +static PyObject *Effect_getType( BPy_Effect * self ); +static int Effect_setType( void ); +static PyObject *Effect_getFlag( BPy_Effect * self ); +static int Effect_setFlag( BPy_Effect * self, PyObject * args ); +static PyObject *Effect_getSta( BPy_Effect * self ); +static int Effect_setSta( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getEnd( BPy_Effect * self ); +static int Effect_setEnd( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getLifetime( BPy_Effect * self ); +static int Effect_setLifetime( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getNormfac( BPy_Effect * self ); +static int Effect_setNormfac( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getObfac( BPy_Effect * self ); +static int Effect_setObfac( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getRandfac( BPy_Effect * self ); +static int Effect_setRandfac( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getTexfac( BPy_Effect * self ); +static int Effect_setTexfac( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getRandlife( BPy_Effect * self ); +static int Effect_setRandlife( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getNabla( BPy_Effect * self ); +static int Effect_setNabla( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getVectsize( BPy_Effect * self ); +static int Effect_setVectsize( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getTotpart( BPy_Effect * self ); +static int Effect_setTotpart( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getTotkey( BPy_Effect * self ); +static int Effect_setTotkey( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getSeed( BPy_Effect * self ); +static int Effect_setSeed( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getForce( BPy_Effect * self ); +static int Effect_setForce( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getMult( BPy_Effect * self ); +static int Effect_setMult( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getLife( BPy_Effect * self ); +static int Effect_setLife( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getMat( BPy_Effect * self ); +static int Effect_setMat( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getChild( BPy_Effect * self ); +static int Effect_setChild( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_getDefvec( BPy_Effect * self ); +static int Effect_setDefvec( BPy_Effect * self, PyObject * a ); + +static PyObject *Effect_oldsetType( void ); +static PyObject *Effect_oldsetFlag( BPy_Effect * self, PyObject * args ); +static PyObject *Effect_oldsetSta( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetEnd( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetLifetime( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetNormfac( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetObfac( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetRandfac( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetTexfac( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetRandlife( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetNabla( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetVectsize( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetTotpart( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetTotkey( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetSeed( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetForce( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetMult( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetLife( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetMat( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetChild( BPy_Effect * self, PyObject * a ); +static PyObject *Effect_oldsetDefvec( BPy_Effect * self, PyObject * a ); + +/*****************************************************************************/ +/* Python Effect_Type callback function prototypes: */ +/*****************************************************************************/ +static void Effect_dealloc( BPy_Effect * msh ); +static PyObject *Effect_repr( void ); + +/*****************************************************************************/ +/* The following string definitions are used for documentation strings. */ +/* In Python these will be written to the console when doing a */ +/* Blender.Particle.__doc__ */ +/*****************************************************************************/ +static char M_Particle_doc[] = "The Blender Effect module\n\n\ +This module provides access to **Object Data** in Blender.\n\ +Functions :\n\ + New(name) : creates a new part object and adds it to the given mesh object \n\ + Get(name) : retreives a particle with the given name (mandatory)\n\ + get(name) : same as Get. Kept for compatibility reasons.\n"; +static char M_Effect_New_doc[] = "New(name) : creates a new part object and adds it to the given mesh object\n"; +static char M_Effect_Get_doc[] = "xxx"; + +/*****************************************************************************/ +/* Python method structure definition for Blender.Particle module: */ +/*****************************************************************************/ +static struct PyMethodDef M_Particle_methods[] = { + {"New", ( PyCFunction ) M_Effect_New, METH_VARARGS, M_Effect_New_doc}, + {"Get", M_Effect_Get, METH_VARARGS, M_Effect_Get_doc}, + {"get", M_Effect_Get, METH_VARARGS, M_Effect_Get_doc}, + {NULL, NULL, 0, NULL} +}; /*****************************************************************************/ /* Python BPy_Effect methods table: */ /*****************************************************************************/ static PyMethodDef BPy_Effect_methods[] = { + {"getType", ( PyCFunction ) Effect_getType, + METH_NOARGS, "() - Return Effect type"}, + {"setType", ( PyCFunction ) Effect_oldsetType, + METH_VARARGS, "() - Set Effect type"}, + {"getFlag", ( PyCFunction ) Effect_getFlag, + METH_NOARGS, "() - Return Effect flag"}, + {"setFlag", ( PyCFunction ) Effect_oldsetFlag, + METH_VARARGS, "() - Set Effect flag"}, + {"getStartTime", ( PyCFunction ) Effect_getSta, + METH_NOARGS, "()-Return particle start time"}, + {"setStartTime", ( PyCFunction ) Effect_oldsetSta, METH_VARARGS, + "()- Sets particle start time"}, + {"getEndTime", ( PyCFunction ) Effect_getEnd, + METH_NOARGS, "()-Return particle end time"}, + {"setEndTime", ( PyCFunction ) Effect_oldsetEnd, METH_VARARGS, + "()- Sets particle end time"}, + {"getLifetime", ( PyCFunction ) Effect_getLifetime, + METH_NOARGS, "()-Return particle life time"}, + {"setLifetime", ( PyCFunction ) Effect_oldsetLifetime, METH_VARARGS, + "()- Sets particle life time "}, + {"getNormfac", ( PyCFunction ) Effect_getNormfac, + METH_NOARGS, "()-Return particle life time"}, + {"setNormfac", ( PyCFunction ) Effect_oldsetNormfac, METH_VARARGS, + "()- Sets particle life time "}, + {"getObfac", ( PyCFunction ) Effect_getObfac, + METH_NOARGS, "()-Return particle life time"}, + {"setObfac", ( PyCFunction ) Effect_oldsetObfac, METH_VARARGS, + "()- Sets particle life time "}, + {"getRandfac", ( PyCFunction ) Effect_getRandfac, + METH_NOARGS, "()-Return particle life time"}, + {"setRandfac", ( PyCFunction ) Effect_oldsetRandfac, METH_VARARGS, + "()- Sets particle life time "}, + {"getTexfac", ( PyCFunction ) Effect_getTexfac, + METH_NOARGS, "()-Return particle life time"}, + {"setTexfac", ( PyCFunction ) Effect_oldsetTexfac, METH_VARARGS, + "()- Sets particle life time "}, + {"getRandlife", ( PyCFunction ) Effect_getRandlife, + METH_NOARGS, "()-Return particle life time"}, + {"setRandlife", ( PyCFunction ) Effect_oldsetRandlife, METH_VARARGS, + "()- Sets particle life time "}, + {"getNabla", ( PyCFunction ) Effect_getNabla, + METH_NOARGS, "()-Return particle life time"}, + {"setNabla", ( PyCFunction ) Effect_oldsetNabla, METH_VARARGS, + "()- Sets particle life time "}, + {"getVectsize", ( PyCFunction ) Effect_getVectsize, + METH_NOARGS, "()-Return particle life time"}, + {"setVectsize", ( PyCFunction ) Effect_oldsetVectsize, METH_VARARGS, + "()- Sets particle life time "}, + {"getTotpart", ( PyCFunction ) Effect_getTotpart, + METH_NOARGS, "()-Return particle life time"}, + {"setTotpart", ( PyCFunction ) Effect_oldsetTotpart, METH_VARARGS, + "()- Sets particle life time "}, + {"getTotkey", ( PyCFunction ) Effect_getTotkey, + METH_NOARGS, "()-Return the number of key positions."}, + {"setTotkey", ( PyCFunction ) Effect_oldsetTotkey, METH_VARARGS, + "()-Set the number of key positions. "}, + {"getSeed", ( PyCFunction ) Effect_getSeed, + METH_NOARGS, "()-Return particle life time"}, + {"setSeed", ( PyCFunction ) Effect_oldsetSeed, METH_VARARGS, + "()- Sets particle life time "}, + {"getForce", ( PyCFunction ) Effect_getForce, + METH_NOARGS, "()-Return particle life time"}, + {"setForce", ( PyCFunction ) Effect_oldsetForce, METH_VARARGS, + "()- Sets particle life time "}, + {"getMult", ( PyCFunction ) Effect_getMult, + METH_NOARGS, "()-Return particle life time"}, + {"setMult", ( PyCFunction ) Effect_oldsetMult, METH_VARARGS, + "()- Sets particle life time "}, + {"getLife", ( PyCFunction ) Effect_getLife, + METH_NOARGS, "()-Return particle life time"}, + {"setLife", ( PyCFunction ) Effect_oldsetLife, METH_VARARGS, + "()- Sets particle life time "}, + {"getMat", ( PyCFunction ) Effect_getMat, + METH_NOARGS, "()-Return particle life time"}, + {"setMat", ( PyCFunction ) Effect_oldsetMat, METH_VARARGS, + "()- Sets particle life time "}, + {"getChild", ( PyCFunction ) Effect_getChild, + METH_NOARGS, "()-Return particle life time"}, + {"setChild", ( PyCFunction ) Effect_oldsetChild, METH_VARARGS, + "()- Sets particle life time "}, + {"getDefvec", ( PyCFunction ) Effect_getDefvec, + METH_NOARGS, "()-Return particle life time"}, + {"setDefvec", ( PyCFunction ) Effect_oldsetDefvec, METH_VARARGS, + "()- Sets particle life time "}, {NULL, NULL, 0, NULL} }; /*****************************************************************************/ +/* Python BPy_Effect attributes get/set structure: */ +/*****************************************************************************/ +static PyGetSetDef BPy_Effect_getseters[] = { + {"flag", + (getter)Effect_getFlag, (setter)Effect_setFlag, + "The particle flag bitfield", + NULL}, + {"type", + (getter)Effect_getType, (setter)Effect_setType, + "The effect's type (deprecated)", + NULL}, + {"child", + (getter)Effect_getChild, (setter)Effect_setChild, + "The number of children of a particle that multiply itself", + NULL}, + {"defvec", + (getter)Effect_getDefvec, (setter)Effect_setDefvec, + "The axes of a force, determined by the texture", + NULL}, + {"end", + (getter)Effect_getEnd, (setter)Effect_setEnd, + "The endframe for the effect", + NULL}, + {"force", + (getter)Effect_getForce, (setter)Effect_setForce, + "The axes of a continues force", + NULL}, + {"life", + (getter)Effect_getLife, (setter)Effect_setLife, + "The life span of the next generation of particles", + NULL}, + {"lifetime", + (getter)Effect_getLifetime, (setter)Effect_setLifetime, + "The life span of the particles", + NULL}, + {"mat", + (getter)Effect_getMat, (setter)Effect_setMat, + "Specify the material used for the particles", + NULL}, + {"mult", + (getter)Effect_getMult, (setter)Effect_setMult, + "The probabilities that a \"dying\" particle spawns a new one", + NULL}, + {"nabla", + (getter)Effect_getNabla, (setter)Effect_setNabla, + "The dimension of the area for gradient calculation", + NULL}, + {"normfac", + (getter)Effect_getNormfac, (setter)Effect_setNormfac, + "Particle's starting speed (from the mesh)", + NULL}, + {"obfac", + (getter)Effect_getObfac, (setter)Effect_setObfac, + "Particle's starting speed (from the object)", + NULL}, + {"randfac", + (getter)Effect_getRandfac, (setter)Effect_setRandfac, + "The random variation for the starting speed", + NULL}, + {"randlife", + (getter)Effect_getRandlife, (setter)Effect_setRandlife, + "The random variation for a particle's life", + NULL}, + {"seed", + (getter)Effect_getSeed, (setter)Effect_setSeed, + "The seed for random variations", + NULL}, + {"sta", + (getter)Effect_getSta, (setter)Effect_setSta, + "The startframe for the effect", + NULL}, + {"texfac", + (getter)Effect_getTexfac, (setter)Effect_setTexfac, + "Particle's starting speed (from the texture)", + NULL}, + {"totpart", + (getter)Effect_getTotpart, (setter)Effect_setTotpart, + "The total number of particles", + NULL}, + {"totkey", + (getter)Effect_getTotkey, (setter)Effect_setTotkey, + "The total number of key positions", + NULL}, + {"vectsize", + (getter)Effect_getVectsize, (setter)Effect_setVectsize, + "The speed for particle's rotation direction", + NULL}, + {NULL,NULL,NULL,NULL,NULL} /* Sentinel */ +}; + +/*****************************************************************************/ /* Python Effect_Type structure definition: */ /*****************************************************************************/ PyTypeObject Effect_Type = { - PyObject_HEAD_INIT( NULL ) - 0, /* ob_size */ - "Effect", /* tp_name */ - sizeof( BPy_Effect ), /* tp_basicsize */ - 0, /* tp_itemsize */ - /* methods */ - ( destructor ) EffectDeAlloc, /* tp_dealloc */ - 0, /* tp_print */ - ( getattrfunc ) EffectGetAttr, /* tp_getattr */ - ( setattrfunc ) EffectSetAttr, /* tp_setattr */ - 0, /* tp_compare */ - ( reprfunc ) EffectRepr, /* 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_Effect_methods, /* tp_methods */ - 0, /* tp_members */ + PyObject_HEAD_INIT( NULL ) /* required py macro */ + 0, /* ob_size */ + /* For printing, in format "<module>.<name>" */ + "Blender Effect", /* char *tp_name; */ + sizeof( BPy_Effect ), /* int tp_basicsize; */ + 0, /* tp_itemsize; For allocation */ + + /* Methods to implement standard operations */ + + ( destructor ) Effect_dealloc,/* destructor tp_dealloc; */ + NULL, /* printfunc tp_print; */ + NULL, /* getattrfunc tp_getattr; */ + NULL, /* setattrfunc tp_setattr; */ + NULL, /* cmpfunc tp_compare; */ + ( reprfunc ) Effect_repr, /* reprfunc 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_Effect_methods, /* struct PyMethodDef *tp_methods; */ + NULL, /* struct PyMemberDef *tp_members; */ + BPy_Effect_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 }; -static char M_Effect_GetParticlesLoc_doc[] = "GetParticlesLoc(name,effect num, curframe) : current particles locations"; +static char M_Effect_GetParticlesLoc_doc[] = + "GetParticlesLoc(name,effect num, curframe) : current particles locations"; /*****************************************************************************/ /* Python method structure definition for Blender.Effect module: */ /*****************************************************************************/ - struct PyMethodDef M_Effect_methods[] = { {"New", ( PyCFunction ) M_Effect_New, METH_VARARGS, NULL}, {"Get", M_Effect_Get, METH_VARARGS, NULL}, {"get", M_Effect_Get, METH_VARARGS, NULL}, - {"GetParticlesLoc", M_Effect_GetParticlesLoc, METH_VARARGS, M_Effect_GetParticlesLoc_doc}, + {"GetParticlesLoc", M_Effect_GetParticlesLoc, METH_VARARGS, + M_Effect_GetParticlesLoc_doc}, {NULL, NULL, 0, NULL} }; @@ -99,7 +470,43 @@ struct PyMethodDef M_Effect_methods[] = { /*****************************************************************************/ PyObject *M_Effect_New( PyObject * self, PyObject * args ) { - return M_Particle_New( self, args ); + BPy_Effect *pyeffect; + Effect *bleffect = 0; + Object *ob; + char *name = NULL; + + if( !PyArg_ParseTuple( args, "s", &name ) ) + return EXPP_ReturnPyObjError( PyExc_TypeError, + "expected string argument" ); + + for( ob = G.main->object.first; ob; ob = ob->id.next ) + if( !strcmp( name, ob->id.name + 2 ) ) + break; + + if( !ob ) + return EXPP_ReturnPyObjError( PyExc_AttributeError, + "object does not exist" ); + + if( ob->type != OB_MESH ) + return EXPP_ReturnPyObjError( PyExc_AttributeError, + "object is not a mesh" ); + + pyeffect = ( BPy_Effect * ) PyObject_NEW( BPy_Effect, &Effect_Type ); + if( !pyeffect ) + return EXPP_ReturnPyObjError( PyExc_MemoryError, + "couldn't create Effect Data object" ); + + bleffect = add_effect( EFF_PARTICLE ); + if( !bleffect ) { + Py_DECREF( pyeffect ); + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't create Effect Data in Blender" ); + } + + pyeffect->effect = (PartEff *)bleffect; + BLI_addtail( &ob->effect, bleffect ); + + return ( PyObject * ) pyeffect; } /*****************************************************************************/ @@ -143,7 +550,7 @@ PyObject *M_Effect_Get( PyObject * self, PyObject * args ) if (eff) { wanted_eff = (BPy_Effect *)PyObject_NEW(BPy_Effect, &Effect_Type); - wanted_eff->effect = eff; + wanted_eff->effect = (PartEff *)eff; return ( PyObject * ) wanted_eff; } else { /* didn't find any effect in the given position */ Py_INCREF(Py_None); @@ -158,7 +565,7 @@ PyObject *M_Effect_Get( PyObject * self, PyObject * args ) while (eff) { BPy_Effect *found_eff = (BPy_Effect *)PyObject_NEW(BPy_Effect, &Effect_Type); - found_eff->effect = eff; + found_eff->effect = (PartEff *)eff; PyList_Append( effectlist, ( PyObject * ) found_eff ); Py_DECREF((PyObject *)found_eff); /* PyList_Append incref'ed it */ eff = eff->next; @@ -186,7 +593,7 @@ PyObject *M_Effect_Get( PyObject * self, PyObject * args ) ( BPy_Effect * ) PyObject_NEW( BPy_Effect, &Effect_Type ); - found_eff->effect = eff; + found_eff->effect = (PartEff *)eff; PyList_Append( effectlist, ( PyObject * ) found_eff ); @@ -224,7 +631,7 @@ PyObject *M_Effect_GetParticlesLoc( PyObject * self, PyObject * args ) if( !PyArg_ParseTuple( args, "sif", &name, &num , &cfra) ) return ( EXPP_ReturnPyObjError( PyExc_TypeError, - "expected string, int, float arguments" ) ); + "expected string, int, float arguments" ) ); for( ob = G.main->object.first; ob; ob = ob->id.next ) if( !strcmp( name, ob->id.name + 2 ) ) @@ -273,7 +680,7 @@ PyObject *M_Effect_GetParticlesLoc( PyObject * self, PyObject * args ) vec[0], vec[1], vec[2]) ) < 0 ) { Py_DECREF( list ); return EXPP_ReturnPyObjError( PyExc_RuntimeError, - "Couldn't add item to list" ); + "Couldn't append item to PyList" ); } } } @@ -281,22 +688,54 @@ PyObject *M_Effect_GetParticlesLoc( PyObject * self, PyObject * args ) return list; } +/* create the Blender.Effect.Flags constant dict */ + +static PyObject *Effect_FlagsDict( void ) +{ + PyObject *Flags = PyConstant_New( ); + + if( Flags ) { + BPy_constant *c = ( BPy_constant * ) Flags; + + PyConstant_Insert( c, "SELECTED", + PyInt_FromLong( EFF_SELECT ) ); + PyConstant_Insert( c, "FACE", + PyInt_FromLong( PAF_FACE ) ); + PyConstant_Insert( c, "STATIC", + PyInt_FromLong( PAF_STATIC ) ); + PyConstant_Insert( c, "ANIMATED", + PyInt_FromLong( PAF_ANIMATED ) ); + PyConstant_Insert( c, "BSPLINE", + PyInt_FromLong( PAF_BSPLINE ) ); + } + return Flags; +} + /*****************************************************************************/ /* Function: Effect_Init */ /*****************************************************************************/ - -PyObject *Particle_Init( void ); - PyObject *Effect_Init( void ) { PyObject *submodule, *dict; + PyObject *particle; + PyObject *Flags; - Effect_Type.ob_type = &PyType_Type; + if( PyType_Ready( &Effect_Type ) < 0) + return NULL; + + Flags = Effect_FlagsDict( ); submodule = Py_InitModule3( "Blender.Effect", M_Effect_methods, 0 ); + if( Flags ) + PyModule_AddObject( submodule, "Flags", Flags ); + + particle = Py_InitModule3( "Blender.Particle", M_Particle_methods, + M_Particle_doc ); + dict = PyModule_GetDict( submodule ); - PyDict_SetItemString( dict, "Particle", Particle_Init( ) ); + + PyDict_SetItemString( dict, "Particle", particle ); return ( submodule ); } @@ -304,7 +743,7 @@ PyObject *Effect_Init( void ) /* Python BPy_Effect methods: */ /*****************************************************************************/ -PyObject *Effect_getType( BPy_Effect * self ) +static PyObject *Effect_getType( BPy_Effect * self ) { PyObject *attr = PyInt_FromLong( ( long ) self->effect->type ); if( attr ) @@ -313,124 +752,489 @@ PyObject *Effect_getType( BPy_Effect * self ) "couldn't get mode attribute" ) ); } - /* does nothing since there is only one type of effect */ -PyObject *Effect_setType( BPy_Effect * self ) +static int Effect_setType( void ) { - Py_INCREF( Py_None ); - return Py_None; + return 0; } -PyObject *Effect_getFlag( BPy_Effect * self ) +static PyObject *Effect_getFlag( BPy_Effect * self ) { PyObject *attr = PyInt_FromLong( ( long ) self->effect->flag ); + if( attr ) return attr; - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get mode attribute" ) ); + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.flag attribute" ); } +static int Effect_setFlag( BPy_Effect * self, PyObject * args ) +{ + short param; + static short bitmask = PAF_FACE | PAF_STATIC | PAF_ANIMATED | PAF_BSPLINE; + + if( !PyArg_Parse( args, "h", ¶m ) ) + return EXPP_ReturnIntError( PyExc_TypeError, + "expected an int as argument" ); + + /* we don't allow users to change the select bit at this time */ + param &= ~EFF_SELECT; + + if ( ( param & bitmask ) != param ) + return EXPP_ReturnIntError( PyExc_ValueError, + "invalid bit(s) set in mask" ); + self->effect->flag &= EFF_SELECT; + self->effect->flag |= param; + return 0; +} -PyObject *Effect_setFlag( BPy_Effect * self, PyObject * args ) +static PyObject *Effect_getSta( BPy_Effect * self ) { - int value; - if( !PyArg_ParseTuple( args, "i", &value ) ) - return ( EXPP_ReturnPyObjError( PyExc_TypeError, - "expected an int as argument" ) ); - self->effect->flag = (short)value; - Py_INCREF( Py_None ); - return Py_None; + PyObject *attr = PyFloat_FromDouble( self->effect->sta ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.sta attribute" ); } +static int Effect_setSta( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setFloatClamped( args, &self->effect->sta, + EXPP_EFFECT_STA_MIN, MAXFRAMEF ); +} +static PyObject *Effect_getEnd( BPy_Effect * self ) +{ + PyObject *attr; + PartEff *ptr = ( PartEff * ) self->effect; + attr = PyFloat_FromDouble( ptr->end ); + if( attr ) + return attr; + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.end attribute" ); +} -/*****************************************************************************/ -/* Function: EffectDeAlloc */ -/* Description: This is a callback function for the BPy_Effect type. It is */ -/* the destructor function. */ -/*****************************************************************************/ -void EffectDeAlloc( BPy_Effect * self ) +static int Effect_setEnd( BPy_Effect * self, PyObject * args ) { - PyObject_DEL( self ); + float val; + + if( !PyArg_Parse( args, "f", &val ) ) + return EXPP_ReturnIntError( PyExc_AttributeError, + "expected float argument" ); + + self->effect->end = EXPP_ClampFloat( val, + EXPP_EFFECT_END_MIN, MAXFRAMEF ); + return 0; } -/*****************************************************************************/ -/* Function: EffectGetAttr */ -/* Description: This is a callback function for the BPy_Effect type. It is */ -/* the function that accesses BPy_Effect "member variables" and */ -/* methods. */ -/*****************************************************************************/ +static PyObject *Effect_getLifetime( BPy_Effect * self ) +{ + PyObject *attr = PyFloat_FromDouble( self->effect->lifetime ); + if( attr ) + return attr; -PyObject *EffectGetAttr( BPy_Effect * self, char *name ) + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.lifetime attribute" ); +} + +static int Effect_setLifetime( BPy_Effect * self, PyObject * args ) { - switch ( self->effect->type ) { - case EFF_PARTICLE: - return ParticleGetAttr( ( BPy_Particle * ) self, name ); - } + return EXPP_setFloatClamped( args, &self->effect->lifetime, + EXPP_EFFECT_LIFETIME_MIN, MAXFRAMEF ); +} + +static PyObject *Effect_getNormfac( BPy_Effect * self ) +{ + PyObject *attr = PyFloat_FromDouble( self->effect->normfac ); + + if( attr ) + return attr; - return Py_FindMethod( BPy_Effect_methods, ( PyObject * ) self, name ); + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.normfac attribute" ); } -/*****************************************************************************/ -/* Function: EffectSetAttr */ -/* Description: This is a callback function for the BPy_Effect type. It */ -/* sets Effect Data attributes (member variables). */ -/*****************************************************************************/ +static int Effect_setNormfac( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setFloatClamped( args, &self->effect->normfac, + EXPP_EFFECT_NORMFAC_MIN, EXPP_EFFECT_NORMFAC_MAX ); +} +static PyObject *Effect_getObfac( BPy_Effect * self ) +{ + PyObject *attr = PyFloat_FromDouble( self->effect->obfac ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.obfac attribute" ); +} -int EffectSetAttr( BPy_Effect * self, char *name, PyObject * value ) +static int Effect_setObfac( BPy_Effect * self, PyObject * args ) { - switch ( self->effect->type ) { - case EFF_PARTICLE: - return ParticleSetAttr( ( BPy_Particle * ) self, name, value ); - } - return 0; /* normal exit */ + return EXPP_setFloatClamped( args, &self->effect->obfac, + EXPP_EFFECT_OBFAC_MIN, EXPP_EFFECT_OBFAC_MAX ); +} + +static PyObject *Effect_getRandfac( BPy_Effect * self ) +{ + PyObject *attr = PyFloat_FromDouble( self->effect->randfac ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.randfac attribute" ); +} + +static int Effect_setRandfac( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setFloatClamped( args, &self->effect->randfac, + EXPP_EFFECT_RANDFAC_MIN, EXPP_EFFECT_RANDFAC_MAX ); +} + +static PyObject *Effect_getTexfac( BPy_Effect * self ) +{ + PyObject *attr = PyFloat_FromDouble( self->effect->texfac ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.texfac attribute" ); +} + +static int Effect_setTexfac( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setFloatClamped( args, &self->effect->texfac, + EXPP_EFFECT_TEXFAC_MIN, EXPP_EFFECT_TEXFAC_MAX ); +} + +static PyObject *Effect_getRandlife( BPy_Effect * self ) +{ + PyObject *attr = PyFloat_FromDouble( self->effect->randlife ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.randlife attribute" ); +} + +static int Effect_setRandlife( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setFloatClamped( args, &self->effect->randlife, + EXPP_EFFECT_RANDLIFE_MIN, EXPP_EFFECT_RANDLIFE_MAX ); +} + +static PyObject *Effect_getNabla( BPy_Effect * self ) +{ + PyObject *attr = PyFloat_FromDouble( self->effect->nabla ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.nabla attribute" ); +} + +static int Effect_setNabla( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setFloatClamped( args, &self->effect->nabla, + EXPP_EFFECT_NABLA_MIN, EXPP_EFFECT_NABLA_MAX ); +} + +static PyObject *Effect_getVectsize( BPy_Effect * self ) +{ + PyObject *attr = PyFloat_FromDouble( self->effect->vectsize ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.vectsize attribute" ); +} + +static int Effect_setVectsize( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setFloatClamped( args, &self->effect->vectsize, + EXPP_EFFECT_VECTSIZE_MIN, EXPP_EFFECT_VECTSIZE_MAX ); +} + +static PyObject *Effect_getTotpart( BPy_Effect * self ) +{ + PyObject *attr = PyInt_FromLong( self->effect->totpart ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.totpart attribute" ); +} + +static int Effect_setTotpart( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setIValueClamped( args, &self->effect->totpart, + EXPP_EFFECT_TOTPART_MIN, EXPP_EFFECT_TOTPART_MAX, 'i' ); +} + +static PyObject *Effect_getTotkey( BPy_Effect * self ) +{ + PyObject *attr = PyInt_FromLong( self->effect->totkey ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.totkey attribute" ); +} + +static int Effect_setTotkey( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setIValueClamped( args, &self->effect->totkey, + EXPP_EFFECT_TOTKEY_MIN, EXPP_EFFECT_TOTKEY_MAX, 'i' ); +} + +static PyObject *Effect_getSeed( BPy_Effect * self ) +{ + PyObject *attr = PyInt_FromLong( self->effect->seed ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.seed attribute" ); +} + +static int Effect_setSeed( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setIValueClamped( args, &self->effect->seed, + EXPP_EFFECT_SEED_MIN, EXPP_EFFECT_SEED_MAX, 'i' ); +} + +static PyObject *Effect_getForce( BPy_Effect * self ) +{ + PyObject *attr = Py_BuildValue( "(f,f,f)", self->effect->force[0], + self->effect->force[1], self->effect->force[2] ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.force attribute" ); +} + +static int Effect_setForce( BPy_Effect * self, PyObject * args ) +{ + float val[3]; + int i; + + if( PyTuple_Check( args ) && PyTuple_Size( args ) == 1 ) + args = PyTuple_GetItem( args, 0 ); + + if( !PyArg_ParseTuple( args, "fff", &val[0], &val[1], &val[2] ) ) + return EXPP_ReturnIntError( PyExc_AttributeError, + "expected a tuple of three float arguments" ); + for( i = 0; i < 3; ++i ) + self->effect->force[i] = EXPP_ClampFloat( val[i], + EXPP_EFFECT_FORCE_MIN, EXPP_EFFECT_FORCE_MAX ); + return 0; +} + +static PyObject *Effect_getMult( BPy_Effect * self ) +{ + PyObject *attr = Py_BuildValue( "(f,f,f,f)", self->effect->mult[0], + self->effect->mult[1], self->effect->mult[2], + self->effect->mult[3] ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.mult attribute" ); +} + +static int Effect_setMult( BPy_Effect * self, PyObject * args ) +{ + float val[4]; + int i; + + if( PyTuple_Check( args ) && PyTuple_Size( args ) == 1 ) + args = PyTuple_GetItem( args, 0 ); + + if( !PyArg_ParseTuple( args, "ffff", &val[0], &val[1], &val[2], &val[3] ) ) + return EXPP_ReturnIntError( PyExc_AttributeError, + "expected a tuple of four float arguments" ); + for( i = 0; i < 4; ++i ) + self->effect->mult[i] = EXPP_ClampInt( val[i], + EXPP_EFFECT_MULT_MIN, EXPP_EFFECT_MULT_MAX ); + return 0; +} + +static PyObject *Effect_getLife( BPy_Effect * self ) +{ + PyObject *attr = Py_BuildValue( "(f,f,f,f)", self->effect->life[0], + self->effect->life[1], self->effect->life[2], + self->effect->life[3] ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.life attribute" ); +} + +static int Effect_setLife( BPy_Effect * self, PyObject * args ) +{ + float val[4]; + int i; + + if( PyTuple_Check( args ) && PyTuple_Size( args ) == 1 ) + args = PyTuple_GetItem( args, 0 ); + + if( !PyArg_ParseTuple( args, "ffff", &val[0], &val[1], &val[2], &val[3] ) ) + return EXPP_ReturnIntError( PyExc_AttributeError, + "expected a tuple of four float arguments" ); + for( i = 0; i < 4; ++i ) + self->effect->life[i] = EXPP_ClampFloat( val[i], + EXPP_EFFECT_LIFE_MIN, MAXFRAMEF ); + return 0; +} + +static PyObject *Effect_getChild( BPy_Effect * self ) +{ + PyObject *attr = Py_BuildValue( "(h,h,h,h)", self->effect->child[0], + self->effect->child[1], self->effect->child[2], + self->effect->child[3] ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.child attribute" ); +} + + +static int Effect_setChild( BPy_Effect * self, PyObject * args ) +{ + short val[4]; + int i; + + if( PyTuple_Check( args ) && PyTuple_Size( args ) == 1 ) + args = PyTuple_GetItem( args, 0 ); + + if( !PyArg_ParseTuple( args, "hhhh", &val[0], &val[1], &val[2], &val[3] ) ) + return EXPP_ReturnIntError( PyExc_AttributeError, + "expected a tuple of four int argument" ); + for( i = 0; i < 4; ++i ) + self->effect->child[i] = EXPP_ClampInt( val[i], + EXPP_EFFECT_CHILD_MIN, EXPP_EFFECT_CHILD_MAX ); + return 0; +} + +static PyObject *Effect_getMat( BPy_Effect * self ) +{ + PyObject *attr = Py_BuildValue( "(h,h,h,h)", self->effect->mat[0], + self->effect->mat[1], self->effect->mat[2], + self->effect->mat[3] ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.mat attribute" ); +} + +static int Effect_setMat( BPy_Effect * self, PyObject * args ) +{ + short val[4]; + int i; + + if( PyTuple_Check( args ) && PyTuple_Size( args ) == 1 ) + args = PyTuple_GetItem( args, 0 ); + + if( !PyArg_ParseTuple( args, "hhhh", &val[0], &val[1], &val[2], &val[3] ) ) + return EXPP_ReturnIntError( PyExc_AttributeError, + "expected a tuple of four int argument" ); + for( i = 0; i < 4; ++i ) + self->effect->mat[i] = EXPP_ClampInt( val[i], + EXPP_EFFECT_MAT_MIN, EXPP_EFFECT_MAT_MAX ); + return 0; +} + +static PyObject *Effect_getDefvec( BPy_Effect * self ) +{ + PyObject *attr = Py_BuildValue( "(f,f,f)", self->effect->defvec[0], + self->effect->defvec[1], self->effect->defvec[2] ); + + if( attr ) + return attr; + + return EXPP_ReturnPyObjError( PyExc_RuntimeError, + "couldn't get Effect.defvec attribute" ); +} + +static int Effect_setDefvec( BPy_Effect * self, PyObject * args ) +{ + float val[3]; + int i; + + if( PyTuple_Check( args ) && PyTuple_Size( args ) == 1 ) + args = PyTuple_GetItem( args, 0 ); + + if( !PyArg_ParseTuple( args, "fff", &val[0], &val[1], &val[2] ) ) + return EXPP_ReturnIntError( PyExc_AttributeError, + "expected a tuple of three float arguments" ); + + for( i = 0; i < 3; ++i ) + self->effect->defvec[i] = EXPP_ClampFloat( val[i], + EXPP_EFFECT_DEFVEC_MIN, EXPP_EFFECT_DEFVEC_MAX ); + return 0; } /*****************************************************************************/ -/* Function: EffectPrint */ -/* Description: This is a callback function for the BPy_Effect type. It */ -/* builds a meaninful string to 'print' effcte objects. */ +/* Function: Effect_dealloc */ +/* Description: This is a callback function for the BPy_Effect type. It is */ +/* the destructor function. */ /*****************************************************************************/ -/* -int EffectPrint(BPy_Effect *self, FILE *fp, int flags) -{ -if (self->effect->type == EFF_PARTICLE)puts("Effect Particle"); - - return 0; +static void Effect_dealloc( BPy_Effect * self ) +{ + PyObject_DEL( self ); } -*/ + /*****************************************************************************/ -/* Function: EffectRepr */ +/* Function: Effect_repr */ /* Description: This is a callback function for the BPy_Effect type. It */ /* builds a meaninful string to represent effcte objects. */ /*****************************************************************************/ -PyObject *EffectRepr( BPy_Effect * self ) +static PyObject *Effect_repr( void ) { - char *str = ""; - if( self->effect->type == EFF_PARTICLE ) - str = "Effect Particle"; - return PyString_FromString( str ); + return PyString_FromString( "Particle" ); } -PyObject *EffectCreatePyObject( struct Effect * effect ) +/*****************************************************************************/ +/* These are needed by Object.c */ +/*****************************************************************************/ +PyObject *EffectCreatePyObject( Effect * effect ) { BPy_Effect *blen_object; blen_object = ( BPy_Effect * ) PyObject_NEW( BPy_Effect, &Effect_Type ); - if( blen_object == NULL ) { - return ( NULL ); - } - blen_object->effect = effect; - return ( ( PyObject * ) blen_object ); + if( blen_object ) + blen_object->effect = (PartEff *)effect; + return ( PyObject * ) blen_object; } int EffectCheckPyObject( PyObject * py_obj ) @@ -438,12 +1242,115 @@ int EffectCheckPyObject( PyObject * py_obj ) return ( py_obj->ob_type == &Effect_Type ); } +/* #####DEPRECATED###### */ + +static PyObject *Effect_oldsetChild( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapperTuple( (void *)self, args, + (setter)Effect_setChild ); +} + +static PyObject *Effect_oldsetDefvec( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapperTuple( (void *)self, args, + (setter)Effect_setDefvec ); +} + +static PyObject *Effect_oldsetForce( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapperTuple( (void *)self, args, + (setter)Effect_setForce ); +} + +static PyObject *Effect_oldsetMat( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapperTuple( (void *)self, args, + (setter)Effect_setMat ); +} + +static PyObject *Effect_oldsetEnd( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setEnd ); +} -struct Effect *EffectFromPyObject( PyObject * py_obj ) +static PyObject *Effect_oldsetLife( BPy_Effect * self, PyObject * args ) { - BPy_Effect *blen_obj; + return EXPP_setterWrapperTuple( (void *)self, args, + (setter)Effect_setLife ); +} - blen_obj = ( BPy_Effect * ) py_obj; - return ( ( Effect * ) blen_obj->effect ); +static PyObject *Effect_oldsetLifetime( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setLifetime ); +} +static PyObject *Effect_oldsetMult( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapperTuple( (void *)self, args, + (setter)Effect_setMult ); +} + +static PyObject *Effect_oldsetNabla( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setNabla ); +} + +static PyObject *Effect_oldsetNormfac( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setNormfac ); +} + +static PyObject *Effect_oldsetObfac( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setObfac ); +} + +static PyObject *Effect_oldsetRandfac( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setRandfac ); +} + +static PyObject *Effect_oldsetRandlife( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setRandlife ); +} + +static PyObject *Effect_oldsetSeed( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setSeed ); +} + +static PyObject *Effect_oldsetSta( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setSta ); +} + +static PyObject *Effect_oldsetTexfac( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setTexfac ); +} + +static PyObject *Effect_oldsetTotkey( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setTotkey ); +} + +static PyObject *Effect_oldsetTotpart( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setTotpart ); +} + +static PyObject *Effect_oldsetVectsize( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setVectsize ); +} + +static PyObject *Effect_oldsetFlag( BPy_Effect * self, PyObject * args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)Effect_setFlag ); +} + +static PyObject *Effect_oldsetType( void ) +{ + return EXPP_incr_ret( Py_None ); } |