[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12412] trunk/blender/source/blender/ python/api2_2x: ==Python API==
Campbell Barton
cbarton at metavr.com
Sat Oct 27 00:38:15 CEST 2007
Revision: 12412
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12412
Author: campbellbarton
Date: 2007-10-27 00:38:15 +0200 (Sat, 27 Oct 2007)
Log Message:
-----------
==Python API==
layerMask access for pose bones, even though this is a Bone property, its much more convenient to add access from the poseBone, it also matches how the
user interface works.
Modified Paths:
--------------
trunk/blender/source/blender/python/api2_2x/Pose.c
trunk/blender/source/blender/python/api2_2x/doc/Pose.py
Modified: trunk/blender/source/blender/python/api2_2x/Pose.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Pose.c 2007-10-26 22:11:08 UTC (rev 12411)
+++ trunk/blender/source/blender/python/api2_2x/Pose.c 2007-10-26 22:38:15 UTC (rev 12412)
@@ -1128,7 +1128,35 @@
return 0;
}
+//------------------------Bone.layerMask (get)
+static PyObject *PoseBone_getLayerMask(BPy_PoseBone *self)
+{
+ /* do this extra stuff because the short's bits can be negative values */
+ unsigned short laymask = 0;
+ laymask |= self->posechannel->bone->layer;
+ return PyInt_FromLong((int)laymask);
+}
+//------------------------Bone.layerMask (set)
+static int PoseBone_setLayerMask(BPy_PoseBone *self, PyObject *value)
+{
+ int laymask;
+ if (!PyInt_Check(value)) {
+ return EXPP_ReturnIntError( PyExc_AttributeError,
+ "expected an integer (bitmask) as argument" );
+ }
+
+ laymask = PyInt_AsLong(value);
+ if (laymask <= 0 || laymask > (1<<16) - 1)
+ return EXPP_ReturnIntError( PyExc_AttributeError,
+ "bitmask must have from 1 up to 16 bits set");
+
+ self->posechannel->bone->layer = 0;
+ self->posechannel->bone->layer |= laymask;
+
+ return 0;
+}
+
//------------------TYPE_OBECT IMPLEMENTATION---------------------------
//------------------------tp_getset
//This contains methods for attributes that require checking
@@ -1188,7 +1216,8 @@
"disable Y DoF when part of an IK", (void *)BONE_IK_NO_YDOF },
{"lockZRot", (getter)PoseBone_getIKFlag, (setter)PoseBone_setIKFlag,
"disable Z DoF when part of an IK", (void *)BONE_IK_NO_ZDOF },
-
+ {"layerMask", (getter)PoseBone_getLayerMask, (setter)PoseBone_setLayerMask,
+ "Layer bitmask", NULL },
{NULL, NULL, NULL, NULL, NULL}
};
//------------------------tp_dealloc
Modified: trunk/blender/source/blender/python/api2_2x/doc/Pose.py
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/Pose.py 2007-10-26 22:11:08 UTC (rev 12411)
+++ trunk/blender/source/blender/python/api2_2x/doc/Pose.py 2007-10-26 22:38:15 UTC (rev 12412)
@@ -217,7 +217,11 @@
@ivar lockYRot: Disable Y DoF when part of an IK.
@type lockZRot: bool
@ivar lockZRot: Disable Z DoF when part of an IK.
-
+ @ivar layerMask: Layer bitmask
+ Example::
+ # set bone to layers 14 and 16
+ bone.layerMask = (1<<13) + (1<<15)
+ @type layerMask: Int
"""
def insertKey(parentObject, frameNumber, type = "[Pose.LOC, Pose.ROT, Pose.SIZE]", fast = False):
More information about the Bf-blender-cvs
mailing list