Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2007-03-08 17:37:34 +0300
committerCampbell Barton <ideasman42@gmail.com>2007-03-08 17:37:34 +0300
commit5eaf9f90c1acc1b337a3fee38887f5db2a46ac81 (patch)
tree6c2608c7d77487761dfeefc0caf15be68dd64b0b /source/blender/python/api2_2x/Modifier.c
parent51c16edabc18a13e91bee1a35cbe39eb1e911ea3 (diff)
BPython API
added a function - GenericLib_assignData for assigning blender data, to assign an ipo to a camera or world to a scene for instance. Using this function removed ~300 lines of code. also fixes user count error in some places that didnt check. also made it possible to clear the colorband by setting it to []
Diffstat (limited to 'source/blender/python/api2_2x/Modifier.c')
-rw-r--r--source/blender/python/api2_2x/Modifier.c138
1 files changed, 14 insertions, 124 deletions
diff --git a/source/blender/python/api2_2x/Modifier.c b/source/blender/python/api2_2x/Modifier.c
index 751100964cf..8ddbb2f9dcf 100644
--- a/source/blender/python/api2_2x/Modifier.c
+++ b/source/blender/python/api2_2x/Modifier.c
@@ -398,27 +398,8 @@ static int armature_setter( BPy_Modifier *self, int type, PyObject *value )
ArmatureModifierData *md = (ArmatureModifierData *)(self->md);
switch( type ) {
- case EXPP_MOD_OBJECT: {
- Object *ob_new=NULL;
- if (value == Py_None) {
- md->object = NULL;
- } else if (BPy_Object_Check( value )) {
- ob_new = ((( BPy_Object * )value)->object);
- if( ob_new->type != OB_ARMATURE) {
- return EXPP_ReturnIntError( PyExc_TypeError,
- "this object is not a supported type" );
- }
-
- if( ob_new == self->object )
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Cannot assign the object to its self" );
- md->object = ob_new;
- } else {
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Expected an Object or None value" );
- }
- return 0;
- }
+ case EXPP_MOD_OBJECT:
+ return GenericLib_assignData(value, (void **) &md->object, 0, 0, ID_OB, OB_ARMATURE);
case EXPP_MOD_VERTGROUP:
return EXPP_setBitfield( value, &md->deformflag, 1, 'h' );
case EXPP_MOD_ENVELOPES:
@@ -447,27 +428,8 @@ static int lattice_setter( BPy_Modifier *self, int type, PyObject *value )
LatticeModifierData *md = (LatticeModifierData *)(self->md);
switch( type ) {
- case EXPP_MOD_OBJECT: {
- Object *ob_new=NULL;
- if (value == Py_None) {
- md->object = NULL;
- } else if (BPy_Object_Check( value )) {
- ob_new = ((( BPy_Object * )value)->object);
- if( ob_new->type != OB_LATTICE) {
- return EXPP_ReturnIntError( PyExc_TypeError,
- "this object is not a supported type" );
- }
-
- if( ob_new == self->object )
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Cannot assign the object to its self" );
- md->object = ob_new;
- } else {
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Expected an Object or None value" );
- }
- return 0;
- }
+ case EXPP_MOD_OBJECT:
+ return GenericLib_assignData(value, (void **) &md->object, (void **) &self->object, 0, ID_OB, OB_LATTICE);
case EXPP_MOD_VERTGROUP: {
char *name = PyString_AsString( value );
if( !name )
@@ -501,26 +463,8 @@ static int curve_setter( BPy_Modifier *self, int type, PyObject *value )
CurveModifierData *md = (CurveModifierData *)(self->md);
switch( type ) {
- case EXPP_MOD_OBJECT: {
- Object *ob_new=NULL;
- if (value == Py_None) {
- md->object = NULL;
- } else if (BPy_Object_Check( value )) {
- ob_new = ((( BPy_Object * )value)->object);
- if( ob_new->type != OB_CURVE) {
- return EXPP_ReturnIntError( PyExc_TypeError,
- "this object is not a supported type" );
- }
- if( ob_new == self->object )
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Cannot assign the object to its self" );
- md->object = ob_new;
- } else {
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Expected an Object or None value" );
- }
- return 0;
- }
+ case EXPP_MOD_OBJECT:
+ return GenericLib_assignData(value, (void **) &md->object, (void **) &self->object, 0, ID_OB, OB_CURVE);
case EXPP_MOD_VERTGROUP: {
char *name = PyString_AsString( value );
if( !name )
@@ -715,40 +659,10 @@ static int array_setter( BPy_Modifier *self, int type, PyObject *value )
{
ArrayModifierData *md = (ArrayModifierData *)(self->md);
switch( type ) {
- case EXPP_MOD_OBJECT_OFFSET: {
- Object *ob_new=NULL;
- if (value == Py_None) {
- md->offset_ob = NULL;
- } else if (BPy_Object_Check( value )) {
- ob_new = ((( BPy_Object * )value)->object);
-
- if( ob_new == self->object )
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Cannot assign the object to its self" );
- md->offset_ob = ob_new;
- } else {
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Expected an Object or None value" );
- }
- return 0;
- }
- case EXPP_MOD_OBJECT_CURVE: {
- Object *ob_new=NULL;
- if (value == Py_None) {
- md->curve_ob = NULL;
- } else if (BPy_Object_Check( value )) {
- ob_new = ((( BPy_Object * )value)->object);
-
- if( ob_new == self->object )
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Cannot assign the object to its self" );
- md->curve_ob = ob_new;
- } else {
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Expected an Object or None value" );
- }
- return 0;
- }
+ case EXPP_MOD_OBJECT_OFFSET:
+ return GenericLib_assignData(value, (void **) &md->offset_ob, (void **) &self->object, 0, ID_OB, 0);
+ case EXPP_MOD_OBJECT_CURVE:
+ return GenericLib_assignData(value, (void **) &md->curve_ob, 0, 0, ID_OB, OB_CURVE);
case EXPP_MOD_COUNT:
return EXPP_setIValueClamped( value, &md->count, 1, 1000, 'i' );
case EXPP_MOD_LENGTH:
@@ -780,17 +694,9 @@ static int boolean_setter( BPy_Modifier *self, int type, PyObject *value )
{
BooleanModifierData *md = (BooleanModifierData *)(self->md);
- if( type == EXPP_MOD_OBJECT ) {
- Object *ob = (( BPy_Object * )value)->object;
- if( !BPy_Object_Check( value ) || ob->type != OB_MESH )
- return EXPP_ReturnIntError( PyExc_TypeError,
- "expected BPy mesh object argument" );
- if(ob == self->object )
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Cannot boolean an object with its self" );
- md->object = ob;
- return 0;
- } else if( type == EXPP_MOD_OPERATION )
+ if( type == EXPP_MOD_OBJECT )
+ return GenericLib_assignData(value, (void **) &md->object, (void **) &self->object, 0, ID_OB, OB_MESH);
+ else if( type == EXPP_MOD_OPERATION )
return EXPP_setIValueRange( value, &md->operation,
eBooleanModifierOp_Intersect, eBooleanModifierOp_Difference,
'h' );
@@ -870,23 +776,7 @@ static int displace_setter( BPy_Modifier *self, int type, PyObject *value )
switch( type ) {
case EXPP_MOD_TEXTURE:
- if (md->texture)
- md->texture->id.us--;
-
- if (value == Py_None) {
- md->texture = NULL;
- } else if (Texture_CheckPyObject(value)) {
- BPy_Texture *bpytex = (BPy_Texture *)value;
- md->texture = bpytex->texture;
- md->texture->id.us--;
-
- } else {
- if (md->texture)
- md->texture->id.us++;
- return EXPP_ReturnIntError( PyExc_TypeError,
- "Texture must be of Texture or None type" );
- }
- return 0;
+ return GenericLib_assignData(value, (void **) &md->texture, 0, 1, ID_TE, 0);
case EXPP_MOD_STRENGTH:
return EXPP_setFloatClamped( value, &md->strength, -1000.0, 1000.0 );