Python API update. Again by Anders Nilsson.
* Addition to the Object module. obj.getActionIpos(). This method will return a dict with all ipo keys. Only works when the Object is an armature.
This commit is contained in:
@@ -89,6 +89,7 @@ struct PyMethodDef M_Object_methods[] = {
|
|||||||
static PyObject *Object_buildParts (BPy_Object *self);
|
static PyObject *Object_buildParts (BPy_Object *self);
|
||||||
static PyObject *Object_clearIpo (BPy_Object *self);
|
static PyObject *Object_clearIpo (BPy_Object *self);
|
||||||
static PyObject *Object_clrParent (BPy_Object *self, PyObject *args);
|
static PyObject *Object_clrParent (BPy_Object *self, PyObject *args);
|
||||||
|
static PyObject *Object_getActionIpos (BPy_Object *self);
|
||||||
static PyObject *Object_getData (BPy_Object *self);
|
static PyObject *Object_getData (BPy_Object *self);
|
||||||
static PyObject *Object_getDeltaLocation (BPy_Object *self);
|
static PyObject *Object_getDeltaLocation (BPy_Object *self);
|
||||||
static PyObject *Object_getDrawMode (BPy_Object *self);
|
static PyObject *Object_getDrawMode (BPy_Object *self);
|
||||||
@@ -136,6 +137,8 @@ static PyMethodDef BPy_Object_methods[] = {
|
|||||||
"Clears parent object. Optionally specify:\n\
|
"Clears parent object. Optionally specify:\n\
|
||||||
mode\n\t2: Keep object transform\nfast\n\t>0: Don't update scene \
|
mode\n\t2: Keep object transform\nfast\n\t>0: Don't update scene \
|
||||||
hierarchy (faster)"},
|
hierarchy (faster)"},
|
||||||
|
{"getActionIpos", (PyCFunction)Object_getActionIpos, METH_NOARGS,
|
||||||
|
"() - Return a dict of (name:ipo)-keys containing each channel in the object's action"},
|
||||||
{"getData", (PyCFunction)Object_getData, METH_NOARGS,
|
{"getData", (PyCFunction)Object_getData, METH_NOARGS,
|
||||||
"Returns the datablock object containing the object's data, e.g. Mesh"},
|
"Returns the datablock object containing the object's data, e.g. Mesh"},
|
||||||
{"getDeltaLocation", (PyCFunction)Object_getDeltaLocation, METH_NOARGS,
|
{"getDeltaLocation", (PyCFunction)Object_getDeltaLocation, METH_NOARGS,
|
||||||
@@ -642,6 +645,58 @@ int EXPP_add_obdata(struct Object *object)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PyObject *Object_getActionIpos (BPy_Object *self)
|
||||||
|
{
|
||||||
|
Object *obj=self->object;
|
||||||
|
PyObject *dict=PyDict_New ();
|
||||||
|
|
||||||
|
if (obj->type==OB_ARMATURE) {
|
||||||
|
|
||||||
|
if (obj->action!=0) {
|
||||||
|
|
||||||
|
bAction *action=obj->action;
|
||||||
|
bActionChannel *bone=(bActionChannel*)(action->chanbase.first);
|
||||||
|
|
||||||
|
// Go through the list of bones
|
||||||
|
while (bone!=0) {
|
||||||
|
|
||||||
|
// Does this bone have an ipo?
|
||||||
|
if (bone->ipo!=0) {
|
||||||
|
|
||||||
|
PyObject *ipo_attr=Ipo_CreatePyObject (bone->ipo);
|
||||||
|
|
||||||
|
if (ipo_attr) {
|
||||||
|
|
||||||
|
// Insert dict entry using the bone name as key
|
||||||
|
if (PyDict_SetItemString (dict, bone->name, ipo_attr)!=0) {
|
||||||
|
Py_DECREF ( ipo_attr );
|
||||||
|
Py_DECREF ( dict );
|
||||||
|
|
||||||
|
return EXPP_ReturnPyObjError (PyExc_RuntimeError,
|
||||||
|
"Object_getActionIpos: couldn't set dict item");
|
||||||
|
}
|
||||||
|
|
||||||
|
Py_DECREF (ipo_attr);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
Py_DECREF ( dict );
|
||||||
|
|
||||||
|
return (PythonReturnErrorObject (PyExc_RuntimeError,
|
||||||
|
"Object_getActionIpos: could not create Ipo object"));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bone=bone->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyObject *Object_getData (BPy_Object *self)
|
static PyObject *Object_getData (BPy_Object *self)
|
||||||
{
|
{
|
||||||
PyObject * data_object;
|
PyObject * data_object;
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
#include <BLI_arithb.h>
|
#include <BLI_arithb.h>
|
||||||
#include <BLI_blenlib.h>
|
#include <BLI_blenlib.h>
|
||||||
#include <DNA_armature_types.h>
|
#include <DNA_armature_types.h>
|
||||||
|
#include <DNA_action_types.h>
|
||||||
#include <DNA_ID.h>
|
#include <DNA_ID.h>
|
||||||
#include <DNA_ika_types.h>
|
#include <DNA_ika_types.h>
|
||||||
#include <DNA_listBase.h>
|
#include <DNA_listBase.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user