diff options
author | Campbell Barton <ideasman42@gmail.com> | 2007-01-26 18:43:11 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2007-01-26 18:43:11 +0300 |
commit | d79669ad9e822a6a2698785480c0fb6fbaa63a03 (patch) | |
tree | 0bcd5f2732dd1fe16a54e7cdb6dfd9c64f2a9a2f /source/blender/python/api2_2x/Modifier.c | |
parent | 064bcdbb31873ef0cdcd9686f39951d43d7021ae (diff) |
added edge split access to modifiers API
Also renamed Type to Types to match with the rest of the API. Type is still there but removed from docs.
Diffstat (limited to 'source/blender/python/api2_2x/Modifier.c')
-rw-r--r-- | source/blender/python/api2_2x/Modifier.c | 68 |
1 files changed, 65 insertions, 3 deletions
diff --git a/source/blender/python/api2_2x/Modifier.c b/source/blender/python/api2_2x/Modifier.c index 7800b12d856..4ed245fa1cf 100644 --- a/source/blender/python/api2_2x/Modifier.c +++ b/source/blender/python/api2_2x/Modifier.c @@ -110,7 +110,12 @@ enum mod_constants { EXPP_MOD_TIMEOFFS, /*BOOLEAN SPESIFIC*/ - EXPP_MOD_OPERATION + EXPP_MOD_OPERATION, + + /*EDGE SPLIT SPESIFIC */ + EXPP_MOD_EDGESPLIT_ANGLE, + EXPP_MOD_EDGESPLIT_FROM_ANGLE, + EXPP_MOD_EDGESPLIT_FROM_SHARP /* yet to be implemented */ /* EXPP_MOD_HOOK_,*/ @@ -717,6 +722,48 @@ static int boolean_setter( BPy_Modifier *self, int type, PyObject *value ) return EXPP_ReturnIntError( PyExc_KeyError, "key not found" ); } + +static PyObject *edgesplit_getter( BPy_Modifier * self, int type ) +{ + EdgeSplitModifierData *md = (EdgeSplitModifierData *)(self->md); + + switch( type ) { + case EXPP_MOD_EDGESPLIT_ANGLE: + return PyFloat_FromDouble( (double)md->split_angle ); + case EXPP_MOD_EDGESPLIT_FROM_ANGLE: + return PyBool_FromLong( ( long ) + ( md->flags & MOD_EDGESPLIT_FROMANGLE ) ) ; + case EXPP_MOD_EDGESPLIT_FROM_SHARP: + return PyBool_FromLong( ( long ) + ( md->flags & MOD_EDGESPLIT_FROMFLAG ) ) ; + + default: + return EXPP_ReturnPyObjError( PyExc_KeyError, "key not found" ); + } +} + +static int edgesplit_setter( BPy_Modifier *self, int type, PyObject *value ) +{ + EdgeSplitModifierData *md = (EdgeSplitModifierData *)(self->md); + + switch( type ) { + case EXPP_MOD_EDGESPLIT_ANGLE: + return EXPP_setFloatClamped( value, &md->split_angle, 0.0, 180.0 ); + case EXPP_MOD_EDGESPLIT_FROM_ANGLE: + return EXPP_setBitfield( value, &md->flags, + MOD_EDGESPLIT_FROMANGLE, 'h' ); + case EXPP_MOD_EDGESPLIT_FROM_SHARP: + return EXPP_setBitfield( value, &md->flags, + MOD_EDGESPLIT_FROMFLAG, 'h' ); + + default: + return EXPP_ReturnIntError( PyExc_KeyError, "key not found" ); + } +} + + + + /* * get data from a modifier */ @@ -763,6 +810,8 @@ static PyObject *Modifier_getData( BPy_Modifier * self, PyObject * key ) return boolean_getter( self, setting ); case eModifierType_Array: return array_getter( self, setting ); + case eModifierType_EdgeSplit: + return edgesplit_getter( self, setting ); case eModifierType_Hook: case eModifierType_Softbody: case eModifierType_None: @@ -823,6 +872,8 @@ static int Modifier_setData( BPy_Modifier * self, PyObject * key, return wave_setter( self, key_int, arg ); case eModifierType_Boolean: return boolean_setter( self, key_int, arg ); + case eModifierType_EdgeSplit: + return edgesplit_setter( self, key_int, arg ); case eModifierType_Hook: case eModifierType_Softbody: case eModifierType_None: @@ -1235,10 +1286,13 @@ static PyObject *M_Modifier_TypeDict( void ) PyInt_FromLong( eModifierType_Boolean ) ); PyConstant_Insert( d, "ARRAY", PyInt_FromLong( eModifierType_Array ) ); + PyConstant_Insert( d, "EDGESPLIT", + PyInt_FromLong( eModifierType_EdgeSplit ) ); } return S; } + static PyObject *M_Modifier_SettingsDict( void ) { PyObject *S = PyConstant_New( ); @@ -1346,6 +1400,12 @@ for var in st.replace(',','').split('\n'): PyInt_FromLong( EXPP_MOD_TIMEOFFS ) ); PyConstant_Insert( d, "OPERATION", PyInt_FromLong( EXPP_MOD_OPERATION ) ); + PyConstant_Insert( d, "EDGESPLIT_ANGLE", + PyInt_FromLong( EXPP_MOD_EDGESPLIT_ANGLE ) ); + PyConstant_Insert( d, "EDGESPLIT_FROM_ANGLE", + PyInt_FromLong( EXPP_MOD_EDGESPLIT_FROM_ANGLE ) ); + PyConstant_Insert( d, "EDGESPLIT_FROM_SHARP", + PyInt_FromLong( EXPP_MOD_EDGESPLIT_FROM_SHARP ) ); /*End Auto generated code*/ } return S; @@ -1367,8 +1427,10 @@ PyObject *Modifier_Init( void ) submodule = Py_InitModule3( "Blender.Modifier", NULL, "Modifer module for accessing and creating object modifier data" ); - if( TypeDict ) - PyModule_AddObject( submodule, "Type", TypeDict ); + if( TypeDict ) { + PyModule_AddObject( submodule, "Type", TypeDict ); /* deprecated */ + PyModule_AddObject( submodule, "Types", TypeDict ); + } if( SettingsDict ) PyModule_AddObject( submodule, "Settings", SettingsDict ); |