[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16588] trunk/blender/source/blender/ python/api2_2x: This adds support for the new-ish options:

Matt Ebb matt at mke3.net
Thu Sep 18 02:51:51 CEST 2008


Revision: 16588
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16588
Author:   broken
Date:     2008-09-18 02:51:51 +0200 (Thu, 18 Sep 2008)

Log Message:
-----------
This adds support for the new-ish options:
QUATERNION
B_BONE_REST
INVERT_VERTGROUP
MULTIMODIFIER

to the bpy armature modifier API.

It also fixes a significant problem - In the docs, it refers to 
the 'VERTGROUP' field as being a string value, shared
by lattice, armature, etc, referring to the 'VGroup' field in the 
armature modifier that defines a vertex group 'mask'
which the armature's effect is restricted to.

However, previously, for some very mistaken reason, in processing 
the getters/setters for the armature modifier, the
VERTGROUP field was pointing to the quite different 'Vert. Groups' 
toggle in the armature modifier, that enables or
disables using vertex groups for deformation (as opposed to 
envelopes).

I've fixed this, so VERTGROUP points to the VGroup string, as is 
already defined in the docs and consistent with other
modifiers like Lattice. A new field: 'VGROUPS' has been added, 
which is the analog to the 'Vert Groups' toggle.

Modified Paths:
--------------
    trunk/blender/source/blender/python/api2_2x/Modifier.c
    trunk/blender/source/blender/python/api2_2x/doc/Modifier.py

Modified: trunk/blender/source/blender/python/api2_2x/Modifier.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Modifier.c	2008-09-18 00:10:12 UTC (rev 16587)
+++ trunk/blender/source/blender/python/api2_2x/Modifier.c	2008-09-18 00:51:51 UTC (rev 16588)
@@ -83,7 +83,12 @@
 	EXPP_MOD_UV,
 	
 	/*ARMATURE SPECIFIC*/
+	EXPP_MOD_VGROUPS,
 	EXPP_MOD_ENVELOPES,
+	EXPP_MOD_QUATERNION,
+	EXPP_MOD_B_BONE_REST,
+	EXPP_MOD_INVERT_VERTGROUP,
+	EXPP_MOD_MULTIMODIFIER,
 	
 	/*ARRAY SPECIFIC*/
 	EXPP_MOD_OBJECT_OFFSET,
@@ -376,12 +381,23 @@
 	case EXPP_MOD_OBJECT:
 		return Object_CreatePyObject( md->object );
 	case EXPP_MOD_VERTGROUP:
-		return PyBool_FromLong( ( long )( md->deformflag & 1 ) ) ;
+		return PyString_FromString( md->defgrp_name ) ;
+	case EXPP_MOD_VGROUPS:
+		return EXPP_getBitfield( &md->deformflag, ARM_DEF_VGROUP, 'h' );
 	case EXPP_MOD_ENVELOPES:
-		return PyBool_FromLong( ( long )( md->deformflag & 2 ) ) ;
+		return EXPP_getBitfield( &md->deformflag, ARM_DEF_ENVELOPE, 'h' );
+	case EXPP_MOD_QUATERNION:
+		return EXPP_getBitfield( &md->deformflag, ARM_DEF_QUATERNION, 'h' );
+	case EXPP_MOD_B_BONE_REST:
+		return EXPP_getBitfield( &md->deformflag, ARM_DEF_B_BONE_REST, 'h' );
+	case EXPP_MOD_INVERT_VERTGROUP:
+		return EXPP_getBitfield( &md->deformflag, ARM_DEF_INVERT_VGROUP, 'h' );
+	case EXPP_MOD_MULTIMODIFIER:
+		return EXPP_getBitfield( &md->multi, 1, 'h' );
 	default:
 		return EXPP_ReturnPyObjError( PyExc_KeyError, "key not found" );
 	}
+	return 0;
 }
 
 static int armature_setter( BPy_Modifier *self, int type, PyObject *value )
@@ -391,13 +407,30 @@
 	switch( type ) {
 	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_VERTGROUP: {
+		char *defgrp_name = PyString_AsString( value );
+		if( !defgrp_name )
+			return EXPP_ReturnIntError( PyExc_TypeError,
+					"expected string arg" );
+		BLI_strncpy( md->defgrp_name, defgrp_name, sizeof( md->defgrp_name ) );
+		break;
+		}
+	case EXPP_MOD_VGROUPS:
+		return EXPP_setBitfield( value, &md->deformflag, ARM_DEF_VGROUP, 'h' );
 	case EXPP_MOD_ENVELOPES:
-		return EXPP_setBitfield( value, &md->deformflag, 2, 'h' );
+		return EXPP_setBitfield( value, &md->deformflag, ARM_DEF_ENVELOPE, 'h' );
+	case EXPP_MOD_QUATERNION:
+		return EXPP_setBitfield( value, &md->deformflag, ARM_DEF_QUATERNION, 'h' );
+	case EXPP_MOD_B_BONE_REST:
+		return EXPP_setBitfield( value, &md->deformflag, ARM_DEF_B_BONE_REST, 'h' );
+	case EXPP_MOD_INVERT_VERTGROUP:
+		return EXPP_setBitfield( value, &md->deformflag, ARM_DEF_INVERT_VGROUP, 'h' );
+	case EXPP_MOD_MULTIMODIFIER:
+		return EXPP_setBitfield( value, &md->multi, 1, 'h' );
 	default:
 		return EXPP_ReturnIntError( PyExc_KeyError, "key not found" );
 	}
+	return 0;
 }
 
 static PyObject *lattice_getter( BPy_Modifier * self, int type )
@@ -1595,8 +1628,18 @@
 				PyInt_FromLong( EXPP_MOD_OPTIMAL ) );
 			PyConstant_Insert( d, "UV", 
 				PyInt_FromLong( EXPP_MOD_UV ) );
+			PyConstant_Insert( d, "VGROUPS", 
+				PyInt_FromLong( EXPP_MOD_VGROUPS ) );
 			PyConstant_Insert( d, "ENVELOPES", 
 				PyInt_FromLong( EXPP_MOD_ENVELOPES ) );
+			PyConstant_Insert( d, "QUATERNION", 
+				PyInt_FromLong( EXPP_MOD_QUATERNION ) );
+			PyConstant_Insert( d, "B_BONE_REST", 
+				PyInt_FromLong( EXPP_MOD_B_BONE_REST ) );
+			PyConstant_Insert( d, "INVERT_VERTGROUP", 
+				PyInt_FromLong( EXPP_MOD_INVERT_VERTGROUP ) );
+			PyConstant_Insert( d, "MULTIMODIFIER", 
+				PyInt_FromLong( EXPP_MOD_MULTIMODIFIER ) );
 			PyConstant_Insert( d, "OBJECT_OFFSET", 
 				PyInt_FromLong( EXPP_MOD_OBJECT_OFFSET ) );
 			PyConstant_Insert( d, "OBJECT_CURVE", 

Modified: trunk/blender/source/blender/python/api2_2x/doc/Modifier.py
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/Modifier.py	2008-09-18 00:10:12 UTC (rev 16587)
+++ trunk/blender/source/blender/python/api2_2x/doc/Modifier.py	2008-09-18 00:51:51 UTC (rev 16588)
@@ -93,7 +93,12 @@
 	- SCALE_VEC - Used for Array only (3d Vector)
 	- MERGE_DIST - Used for Array only (float)
 
+	- INVERT_VERTGROUP - Used for Armature only (bool)
 	- ENVELOPES - Used for Armature only (bool)
+	- VGROUPS - Used for Armature only (bool)
+	- QUATERNION - Used for Armature only (bool)
+	- B_BONE_REST - Used for Armature only (bool)
+	- MULTIMODIFIER - Used for Armature only (bool)
 	
 	- START - Used for Build only (int)
 	- SEED - Used for Build only (int)





More information about the Bf-blender-cvs mailing list