BGE Animations: Exposing KX_GameObject's GetActionFrame() and SetActionFrame() to Python. KX_GameObject.setActionFrame() seems to still have some issues, which I suspect to be a timing thing. I may need to find a better way to set the local time.

This commit is contained in:
Mitchell Stokes 2011-06-23 22:44:24 +00:00
parent 7996d04474
commit ea47125f16
2 changed files with 32 additions and 1 deletions

@ -1556,6 +1556,8 @@ PyMethodDef KX_GameObject::Methods[] = {
KX_PYMETHODTABLE(KX_GameObject, sendMessage),
KX_PYMETHODTABLE_KEYWORDS(KX_GameObject, playAction),
KX_PYMETHODTABLE(KX_GameObject, getActionFrame),
KX_PYMETHODTABLE(KX_GameObject, setActionFrame),
// dict style access for props
{"get",(PyCFunction) KX_GameObject::sPyget, METH_VARARGS},
@ -3046,7 +3048,7 @@ KX_PYMETHODDEF_DOC(KX_GameObject, playAction,
static const char *kwlist[] = {"name", "start_frame", "end_frame", "layer", "priority", "blendin", "play_mode", "blend_mode", "ipo_flags", "speed", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwds, "sff|hhfhhhf", const_cast<char**>(kwlist),
if (!PyArg_ParseTupleAndKeywords(args, kwds, "sff|hhfhhhf:playAction", const_cast<char**>(kwlist),
&name, &start, &end, &layer, &priority, &blendin, &play_mode, &blend_mode, &ipo_flags, &speed))
return NULL;
@ -3072,6 +3074,33 @@ KX_PYMETHODDEF_DOC(KX_GameObject, playAction,
Py_RETURN_NONE;
}
KX_PYMETHODDEF_DOC(KX_GameObject, getActionFrame,
"getActionFrame(layer)\n"
"Gets the current frame of the action playing in the supplied layer")
{
short layer;
if (!PyArg_ParseTuple(args, "h:getActionFrame", &layer))
return NULL;
return PyLong_FromLong(GetActionFrame(layer));
}
KX_PYMETHODDEF_DOC(KX_GameObject, setActionFrame,
"setActionFrame(layer, frame)\n"
"Set the current fram of the action playing in the supplied layer")
{
short layer, frame;
if (!PyArg_ParseTuple(args, "hh:setActionFrame", &layer, &frame))
return NULL;
SetActionFrame(layer, frame);
Py_RETURN_NONE;
}
/* dict style access */

@ -908,6 +908,8 @@ public:
KX_PYMETHOD_VARARGS(KX_GameObject, ReinstancePhysicsMesh);
KX_PYMETHOD_DOC(KX_GameObject, playAction);
KX_PYMETHOD_DOC(KX_GameObject, getActionFrame);
KX_PYMETHOD_DOC(KX_GameObject, setActionFrame);
/* Dict access */
KX_PYMETHOD_VARARGS(KX_GameObject,get);