BGE API cleanup: action actuator.

This commit is contained in:
Benoit Bolsee 2009-01-21 13:54:53 +00:00
parent ff52dcbf0d
commit 8bd7aa0a01
3 changed files with 309 additions and 132 deletions

@ -52,6 +52,8 @@
#include "FloatValue.h"
#include "PyObjectPlus.h"
#include "blendef.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@ -418,67 +420,6 @@ bool BL_ActionActuator::Update(double curtime, bool frame)
/* Python functions */
/* ------------------------------------------------------------------------- */
/* Integration hooks ------------------------------------------------------- */
PyTypeObject BL_ActionActuator::Type = {
PyObject_HEAD_INIT(&PyType_Type)
0,
"BL_ActionActuator",
sizeof(BL_ActionActuator),
0,
PyDestructor,
0,
__getattr,
__setattr,
0, //&MyPyCompare,
__repr,
0, //&cvalue_as_number,
0,
0,
0,
0
};
PyParentObject BL_ActionActuator::Parents[] = {
&BL_ActionActuator::Type,
&SCA_IActuator::Type,
&SCA_ILogicBrick::Type,
&CValue::Type,
NULL
};
PyMethodDef BL_ActionActuator::Methods[] = {
{"setAction", (PyCFunction) BL_ActionActuator::sPySetAction, METH_VARARGS, (PY_METHODCHAR)SetAction_doc},
{"setStart", (PyCFunction) BL_ActionActuator::sPySetStart, METH_VARARGS, (PY_METHODCHAR)SetStart_doc},
{"setEnd", (PyCFunction) BL_ActionActuator::sPySetEnd, METH_VARARGS, (PY_METHODCHAR)SetEnd_doc},
{"setBlendin", (PyCFunction) BL_ActionActuator::sPySetBlendin, METH_VARARGS, (PY_METHODCHAR)SetBlendin_doc},
{"setPriority", (PyCFunction) BL_ActionActuator::sPySetPriority, METH_VARARGS, (PY_METHODCHAR)SetPriority_doc},
{"setFrame", (PyCFunction) BL_ActionActuator::sPySetFrame, METH_VARARGS, (PY_METHODCHAR)SetFrame_doc},
{"setProperty", (PyCFunction) BL_ActionActuator::sPySetProperty, METH_VARARGS, (PY_METHODCHAR)SetProperty_doc},
{"setFrameProperty", (PyCFunction) BL_ActionActuator::sPySetFrameProperty, METH_VARARGS, (PY_METHODCHAR)SetFrameProperty_doc},
{"setBlendtime", (PyCFunction) BL_ActionActuator::sPySetBlendtime, METH_VARARGS, (PY_METHODCHAR)SetBlendtime_doc},
{"getAction", (PyCFunction) BL_ActionActuator::sPyGetAction, METH_VARARGS, (PY_METHODCHAR)GetAction_doc},
{"getStart", (PyCFunction) BL_ActionActuator::sPyGetStart, METH_VARARGS, (PY_METHODCHAR)GetStart_doc},
{"getEnd", (PyCFunction) BL_ActionActuator::sPyGetEnd, METH_VARARGS, (PY_METHODCHAR)GetEnd_doc},
{"getBlendin", (PyCFunction) BL_ActionActuator::sPyGetBlendin, METH_VARARGS, (PY_METHODCHAR)GetBlendin_doc},
{"getPriority", (PyCFunction) BL_ActionActuator::sPyGetPriority, METH_VARARGS, (PY_METHODCHAR)GetPriority_doc},
{"getFrame", (PyCFunction) BL_ActionActuator::sPyGetFrame, METH_VARARGS, (PY_METHODCHAR)GetFrame_doc},
{"getProperty", (PyCFunction) BL_ActionActuator::sPyGetProperty, METH_VARARGS, (PY_METHODCHAR)GetProperty_doc},
{"getFrameProperty", (PyCFunction) BL_ActionActuator::sPyGetFrameProperty, METH_VARARGS, (PY_METHODCHAR)GetFrameProperty_doc},
{"setChannel", (PyCFunction) BL_ActionActuator::sPySetChannel, METH_VARARGS, (PY_METHODCHAR)SetChannel_doc},
// {"getChannel", (PyCFunction) BL_ActionActuator::sPyGetChannel, METH_VARARGS},
{"getType", (PyCFunction) BL_ActionActuator::sPyGetType, METH_VARARGS, (PY_METHODCHAR)GetType_doc},
{"setType", (PyCFunction) BL_ActionActuator::sPySetType, METH_VARARGS, (PY_METHODCHAR)SetType_doc},
{"getContinue", (PyCFunction) BL_ActionActuator::sPyGetContinue, METH_NOARGS, 0},
{"setContinue", (PyCFunction) BL_ActionActuator::sPySetContinue, METH_O, 0},
{NULL,NULL} //Sentinel
};
PyObject* BL_ActionActuator::_getattr(const STR_String& attr) {
_getattr_up(SCA_IActuator);
}
/* setStart */
const char BL_ActionActuator::GetAction_doc[] =
"getAction()\n"
@ -487,6 +428,8 @@ const char BL_ActionActuator::GetAction_doc[] =
PyObject* BL_ActionActuator::PyGetAction(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getAction()", "the action property");
if (m_action){
return PyString_FromString(m_action->id.name+2);
}
@ -501,6 +444,8 @@ const char BL_ActionActuator::GetProperty_doc[] =
PyObject* BL_ActionActuator::PyGetProperty(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getProperty()", "the property property");
PyObject *result;
result = Py_BuildValue("s", (const char *)m_propname);
@ -516,6 +461,8 @@ const char BL_ActionActuator::GetFrameProperty_doc[] =
PyObject* BL_ActionActuator::PyGetFrameProperty(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getFrameProperty()", "the frameProperty property");
PyObject *result;
result = Py_BuildValue("s", (const char *)m_framepropname);
@ -531,6 +478,8 @@ const char BL_ActionActuator::GetFrame_doc[] =
PyObject* BL_ActionActuator::PyGetFrame(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getFrame()", "the frame property");
PyObject *result;
result = Py_BuildValue("f", m_localtime);
@ -546,6 +495,8 @@ const char BL_ActionActuator::GetEnd_doc[] =
PyObject* BL_ActionActuator::PyGetEnd(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getEnd()", "the end property");
PyObject *result;
result = Py_BuildValue("f", m_endframe);
@ -561,6 +512,8 @@ const char BL_ActionActuator::GetStart_doc[] =
PyObject* BL_ActionActuator::PyGetStart(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getStart()", "the start property");
PyObject *result;
result = Py_BuildValue("f", m_startframe);
@ -577,6 +530,8 @@ const char BL_ActionActuator::GetBlendin_doc[] =
PyObject* BL_ActionActuator::PyGetBlendin(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getBlendin()", "the blendin property");
PyObject *result;
result = Py_BuildValue("f", m_blendin);
@ -593,6 +548,8 @@ const char BL_ActionActuator::GetPriority_doc[] =
PyObject* BL_ActionActuator::PyGetPriority(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getPriority()", "the priority property");
PyObject *result;
result = Py_BuildValue("i", m_priority);
@ -613,6 +570,8 @@ const char BL_ActionActuator::SetAction_doc[] =
PyObject* BL_ActionActuator::PySetAction(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setAction()", "the action property");
char *string;
int reset = 1;
@ -647,6 +606,8 @@ const char BL_ActionActuator::SetStart_doc[] =
PyObject* BL_ActionActuator::PySetStart(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setStart()", "the start property");
float start;
if (PyArg_ParseTuple(args,"f",&start))
@ -668,6 +629,8 @@ const char BL_ActionActuator::SetEnd_doc[] =
PyObject* BL_ActionActuator::PySetEnd(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setEnd()", "the end property");
float end;
if (PyArg_ParseTuple(args,"f",&end))
@ -690,6 +653,8 @@ const char BL_ActionActuator::SetBlendin_doc[] =
PyObject* BL_ActionActuator::PySetBlendin(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setBlendin()", "the blendin property");
float blendin;
if (PyArg_ParseTuple(args,"f",&blendin))
@ -713,6 +678,8 @@ const char BL_ActionActuator::SetBlendtime_doc[] =
PyObject* BL_ActionActuator::PySetBlendtime(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setBlendtime()", "the blendtime property");
float blendframe;
if (PyArg_ParseTuple(args,"f",&blendframe))
@ -740,6 +707,8 @@ const char BL_ActionActuator::SetPriority_doc[] =
PyObject* BL_ActionActuator::PySetPriority(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setPriority()", "the priority property");
int priority;
if (PyArg_ParseTuple(args,"i",&priority))
@ -761,6 +730,8 @@ const char BL_ActionActuator::SetFrame_doc[] =
PyObject* BL_ActionActuator::PySetFrame(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setFrame()", "the frame property");
float frame;
if (PyArg_ParseTuple(args,"f",&frame))
@ -787,6 +758,8 @@ const char BL_ActionActuator::SetProperty_doc[] =
PyObject* BL_ActionActuator::PySetProperty(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setProperty()", "the property property");
char *string;
if (PyArg_ParseTuple(args,"s",&string))
@ -808,6 +781,8 @@ const char BL_ActionActuator::SetFrameProperty_doc[] =
PyObject* BL_ActionActuator::PySetFrameProperty(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setFrameProperty()", "the frameProperty property");
char *string;
if (PyArg_ParseTuple(args,"s",&string))
@ -839,16 +814,80 @@ PyObject* BL_ActionActuator::PyGetChannel(PyObject* self,
}
*/
/* setChannel */
const char BL_ActionActuator::SetChannel_doc[] =
/* getType */
const char BL_ActionActuator::GetType_doc[] =
"getType()\n"
"\tReturns the operation mode of the actuator.\n";
PyObject* BL_ActionActuator::PyGetType(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getType()", "the type property");
return Py_BuildValue("h", m_playtype);
}
/* setType */
const char BL_ActionActuator::SetType_doc[] =
"setType(mode)\n"
"\t - mode: Play (0), Flipper (2), LoopStop (3), LoopEnd (4) or Property (6)\n"
"\tSet the operation mode of the actuator.\n";
PyObject* BL_ActionActuator::PySetType(PyObject* self,
PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setType()", "the type property");
short typeArg;
if (!PyArg_ParseTuple(args, "h", &typeArg)) {
return NULL;
}
switch (typeArg) {
case KX_ACT_ACTION_PLAY:
case KX_ACT_ACTION_FLIPPER:
case KX_ACT_ACTION_LOOPSTOP:
case KX_ACT_ACTION_LOOPEND:
case KX_ACT_ACTION_PROPERTY:
m_playtype = typeArg;
break;
default:
printf("Invalid type for action actuator: %d\n", typeArg); /* error */
}
Py_RETURN_NONE;
}
PyObject* BL_ActionActuator::PyGetContinue(PyObject* self) {
ShowDeprecationWarning("getContinue()", "the continue property");
return PyInt_FromLong((long)(m_end_reset==0));
}
PyObject* BL_ActionActuator::PySetContinue(PyObject* self, PyObject* value) {
ShowDeprecationWarning("setContinue()", "the continue property");
int param = PyObject_IsTrue( value );
if( param == -1 ) {
PyErr_SetString( PyExc_TypeError, "expected True/False or 0/1" );
return NULL;
}
if (param) {
m_end_reset = 0;
} else {
m_end_reset = 1;
}
Py_RETURN_NONE;
}
//<-----Deprecated
/* setChannel */
KX_PYMETHODDEF_DOC(BL_ActionActuator, setChannel,
"setChannel(channel, matrix)\n"
"\t - channel : A string specifying the name of the bone channel.\n"
"\t - matrix : A 4x4 matrix specifying the overriding transformation\n"
"\t as an offset from the bone's rest position.\n";
PyObject* BL_ActionActuator::PySetChannel(PyObject* self,
PyObject* args,
PyObject* kwds)
"\t as an offset from the bone's rest position.\n")
{
float matrix[4][4];
char *string;
@ -923,61 +962,123 @@ PyObject* BL_ActionActuator::PySetChannel(PyObject* self,
Py_RETURN_NONE;
}
/* getType */
const char BL_ActionActuator::GetType_doc[] =
"getType()\n"
"\tReturns the operation mode of the actuator.\n";
PyObject* BL_ActionActuator::PyGetType(PyObject* self,
PyObject* args,
PyObject* kwds) {
return Py_BuildValue("h", m_playtype);
/* ------------------------------------------------------------------------- */
/* Python Integration Hooks */
/* ------------------------------------------------------------------------- */
PyTypeObject BL_ActionActuator::Type = {
PyObject_HEAD_INIT(&PyType_Type)
0,
"BL_ActionActuator",
sizeof(BL_ActionActuator),
0,
PyDestructor,
0,
__getattr,
__setattr,
0, //&MyPyCompare,
__repr,
0, //&cvalue_as_number,
0,
0,
0,
0
};
PyParentObject BL_ActionActuator::Parents[] = {
&BL_ActionActuator::Type,
&SCA_IActuator::Type,
&SCA_ILogicBrick::Type,
&CValue::Type,
NULL
};
PyMethodDef BL_ActionActuator::Methods[] = {
//Deprecated ----->
{"setAction", (PyCFunction) BL_ActionActuator::sPySetAction, METH_VARARGS, (PY_METHODCHAR)SetAction_doc},
{"setStart", (PyCFunction) BL_ActionActuator::sPySetStart, METH_VARARGS, (PY_METHODCHAR)SetStart_doc},
{"setEnd", (PyCFunction) BL_ActionActuator::sPySetEnd, METH_VARARGS, (PY_METHODCHAR)SetEnd_doc},
{"setBlendin", (PyCFunction) BL_ActionActuator::sPySetBlendin, METH_VARARGS, (PY_METHODCHAR)SetBlendin_doc},
{"setPriority", (PyCFunction) BL_ActionActuator::sPySetPriority, METH_VARARGS, (PY_METHODCHAR)SetPriority_doc},
{"setFrame", (PyCFunction) BL_ActionActuator::sPySetFrame, METH_VARARGS, (PY_METHODCHAR)SetFrame_doc},
{"setProperty", (PyCFunction) BL_ActionActuator::sPySetProperty, METH_VARARGS, (PY_METHODCHAR)SetProperty_doc},
{"setFrameProperty", (PyCFunction) BL_ActionActuator::sPySetFrameProperty, METH_VARARGS, (PY_METHODCHAR)SetFrameProperty_doc},
{"setBlendtime", (PyCFunction) BL_ActionActuator::sPySetBlendtime, METH_VARARGS, (PY_METHODCHAR)SetBlendtime_doc},
{"getAction", (PyCFunction) BL_ActionActuator::sPyGetAction, METH_VARARGS, (PY_METHODCHAR)GetAction_doc},
{"getStart", (PyCFunction) BL_ActionActuator::sPyGetStart, METH_VARARGS, (PY_METHODCHAR)GetStart_doc},
{"getEnd", (PyCFunction) BL_ActionActuator::sPyGetEnd, METH_VARARGS, (PY_METHODCHAR)GetEnd_doc},
{"getBlendin", (PyCFunction) BL_ActionActuator::sPyGetBlendin, METH_VARARGS, (PY_METHODCHAR)GetBlendin_doc},
{"getPriority", (PyCFunction) BL_ActionActuator::sPyGetPriority, METH_VARARGS, (PY_METHODCHAR)GetPriority_doc},
{"getFrame", (PyCFunction) BL_ActionActuator::sPyGetFrame, METH_VARARGS, (PY_METHODCHAR)GetFrame_doc},
{"getProperty", (PyCFunction) BL_ActionActuator::sPyGetProperty, METH_VARARGS, (PY_METHODCHAR)GetProperty_doc},
{"getFrameProperty", (PyCFunction) BL_ActionActuator::sPyGetFrameProperty, METH_VARARGS, (PY_METHODCHAR)GetFrameProperty_doc},
// {"getChannel", (PyCFunction) BL_ActionActuator::sPyGetChannel, METH_VARARGS},
{"getType", (PyCFunction) BL_ActionActuator::sPyGetType, METH_VARARGS, (PY_METHODCHAR)GetType_doc},
{"setType", (PyCFunction) BL_ActionActuator::sPySetType, METH_VARARGS, (PY_METHODCHAR)SetType_doc},
{"getContinue", (PyCFunction) BL_ActionActuator::sPyGetContinue, METH_NOARGS, 0},
{"setContinue", (PyCFunction) BL_ActionActuator::sPySetContinue, METH_O, 0},
//<------
KX_PYMETHODTABLE(BL_ActionActuator, setChannel),
{NULL,NULL} //Sentinel
};
PyAttributeDef BL_ActionActuator::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_RW("start", 0, MAXFRAMEF, BL_ActionActuator, m_startframe),
KX_PYATTRIBUTE_FLOAT_RW("end", 0, MAXFRAMEF, BL_ActionActuator, m_endframe),
KX_PYATTRIBUTE_FLOAT_RW("blendin", 0, MAXFRAMEF, BL_ActionActuator, m_blendin),
KX_PYATTRIBUTE_SHORT_RW("priority", 0, 100, false, BL_ActionActuator, m_priority),
KX_PYATTRIBUTE_FLOAT_RW_CHECK("frame", 0, MAXFRAMEF, BL_ActionActuator, m_localtime, CheckFrame),
KX_PYATTRIBUTE_STRING_RW("property", 0, 31, false, BL_ActionActuator, m_propname),
KX_PYATTRIBUTE_STRING_RW("frameProperty", 0, 31, false, BL_ActionActuator, m_framepropname),
KX_PYATTRIBUTE_BOOL_RW("continue", BL_ActionActuator, m_end_reset),
KX_PYATTRIBUTE_FLOAT_RW_CHECK("blendTime", 0, MAXFRAMEF, BL_ActionActuator, m_blendframe, CheckBlendTime),
KX_PYATTRIBUTE_ENUM_RW_CHECK("type",0,100,false,BL_ActionActuator,m_playtype,CheckType),
{ NULL } //Sentinel
};
PyObject* BL_ActionActuator::_getattr(const STR_String& attr) {
if (attr == "action")
return PyString_FromString(m_action->id.name+2);
PyObject* object = _getattr_self(Attributes, this, attr);
if (object != NULL)
return object;
_getattr_up(SCA_IActuator);
}
/* setType */
const char BL_ActionActuator::SetType_doc[] =
"setType(mode)\n"
"\t - mode: Play (0), Flipper (2), LoopStop (3), LoopEnd (4) or Property (6)\n"
"\tSet the operation mode of the actuator.\n";
PyObject* BL_ActionActuator::PySetType(PyObject* self,
PyObject* args,
PyObject* kwds) {
short typeArg;
if (!PyArg_ParseTuple(args, "h", &typeArg)) {
return NULL;
}
int BL_ActionActuator::_setattr(const STR_String& attr, PyObject* value) {
if (attr == "action")
{
if (!PyString_Check(value))
{
PyErr_SetString(PyExc_ValueError, "expected a string");
return 1;
}
switch (typeArg) {
case KX_ACT_ACTION_PLAY:
case KX_ACT_ACTION_FLIPPER:
case KX_ACT_ACTION_LOOPSTOP:
case KX_ACT_ACTION_LOOPEND:
case KX_ACT_ACTION_PROPERTY:
m_playtype = typeArg;
break;
default:
printf("Invalid type for action actuator: %d\n", typeArg); /* error */
}
Py_RETURN_NONE;
}
STR_String val = PyString_AsString(value);
if (val == "")
{
m_action = NULL;
return 0;
}
PyObject* BL_ActionActuator::PyGetContinue(PyObject* self) {
return PyInt_FromLong((long)(m_end_reset==0));
}
bAction *action;
action = (bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
PyObject* BL_ActionActuator::PySetContinue(PyObject* self, PyObject* value) {
int param = PyObject_IsTrue( value );
if( param == -1 ) {
PyErr_SetString( PyExc_TypeError, "expected True/False or 0/1" );
return NULL;
if (!action)
{
PyErr_SetString(PyExc_ValueError, "action not found!");
return 1;
}
m_action = action;
return 0;
}
if (param) {
m_end_reset = 0;
} else {
m_end_reset = 1;
}
Py_RETURN_NONE;
}
int ret = _setattr_self(Attributes, this, attr, value);
if (ret >= 0)
return ret;
return SCA_IActuator::_setattr(attr, value);
}

@ -81,6 +81,7 @@ public:
void SetBlendTime (float newtime);
//Deprecated ----->
KX_PYMETHOD_DOC(BL_ActionActuator,SetAction);
KX_PYMETHOD_DOC(BL_ActionActuator,SetBlendin);
KX_PYMETHOD_DOC(BL_ActionActuator,SetPriority);
@ -90,7 +91,6 @@ public:
KX_PYMETHOD_DOC(BL_ActionActuator,SetProperty);
KX_PYMETHOD_DOC(BL_ActionActuator,SetFrameProperty);
KX_PYMETHOD_DOC(BL_ActionActuator,SetBlendtime);
KX_PYMETHOD_DOC(BL_ActionActuator,SetChannel);
KX_PYMETHOD_DOC(BL_ActionActuator,GetAction);
KX_PYMETHOD_DOC(BL_ActionActuator,GetBlendin);
@ -105,8 +105,12 @@ public:
KX_PYMETHOD_DOC(BL_ActionActuator,SetType);
KX_PYMETHOD_NOARGS(BL_ActionActuator,GetContinue);
KX_PYMETHOD_O(BL_ActionActuator,SetContinue);
//<-----
KX_PYMETHOD_DOC(BL_ActionActuator,setChannel);
virtual PyObject* _getattr(const STR_String& attr);
virtual int _setattr(const STR_String& attr, PyObject* value);
enum ActionActType
{
@ -117,6 +121,46 @@ public:
KX_ACT_ACTION_PROPERTY = 6
};
/* attribute check */
static int CheckFrame(void *self, const PyAttributeDef*)
{
BL_ActionActuator* act = reinterpret_cast<BL_ActionActuator*>(self);
if (act->m_localtime < act->m_startframe)
act->m_localtime = act->m_startframe;
else if (act->m_localtime > act->m_endframe)
act->m_localtime = act->m_endframe;
return 0;
}
static int CheckBlendTime(void *self, const PyAttributeDef*)
{
BL_ActionActuator* act = reinterpret_cast<BL_ActionActuator*>(self);
if (act->m_blendframe < act->m_blendin)
act->m_blendframe = act->m_blendin;
return 0;
}
static int CheckType(void *self, const PyAttributeDef*)
{
BL_ActionActuator* act = reinterpret_cast<BL_ActionActuator*>(self);
switch (act->m_playtype) {
case KX_ACT_ACTION_PLAY:
case KX_ACT_ACTION_FLIPPER:
case KX_ACT_ACTION_LOOPSTOP:
case KX_ACT_ACTION_LOOPEND:
case KX_ACT_ACTION_PROPERTY:
return 0;
default:
PyErr_SetString(PyExc_ValueError, "invalid type supplied");
return 1;
}
}
protected:
void SetStartTime(float curtime);
@ -141,7 +185,7 @@ protected:
float m_stridelength;
short m_playtype;
short m_priority;
short m_end_reset;
bool m_end_reset;
struct bPose* m_pose;
struct bPose* m_blendpose;
struct bPose* m_userpose;

@ -5,7 +5,49 @@ from SCA_IActuator import *
class BL_ActionActuator(SCA_IActuator):
"""
Action Actuators apply an action to an actor.
@ivar action: The name of the action to set as the current action.
@type action: string
@ivar start: Specifies the starting frame of the animation.
@type start: float
@type end: Specifies the ending frame of the animation.
@type end: float
@ivar blendin: Specifies the number of frames of animation to generate when making transitions between actions.
@type blendin: float
@ivar priority: Sets the priority of this actuator. Actuators will lower
priority numbers will override actuators with higher
numbers.
@type priority: integer
@ivar frame: Sets the current frame for the animation.
@type frame: float
@ivar property: Sets the property to be used in FromProp playback mode.
@type property: string
@ivar blendTime: Sets the internal frame timer. This property must be in
the range from 0.0 to 1.0.
@type blendTime: float
@ivar type: The operation mode of the actuator.
KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER,
KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
@type type: integer
@ivar continue: The actions continue option, True or False.
When True, the action will always play from where last left off,
otherwise negative events to this actuator will reset it to its start frame.
@type: boolean
@ivar frameProperty: The name of the property that is set to the current frame number.
@type frameProperty: string
"""
def setChannel(channel, matrix, mode = False):
"""
@param channel: A string specifying the name of the bone channel.
@type channel: string
@param matrix: A 4x4 matrix specifying the overriding transformation
as an offset from the bone's rest position.
@type matrix: list [[float]]
@param mode: True for armature/world space, False for bone space
@type mode: boolean
"""
#--The following methods are deprecated--
def setAction(action, reset = True):
"""
Sets the current action.
@ -154,16 +196,6 @@ class BL_ActionActuator(SCA_IActuator):
@rtype: string
"""
def setChannel(channel, matrix, mode = False):
"""
@param channel: A string specifying the name of the bone channel.
@type channel: string
@param matrix: A 4x4 matrix specifying the overriding transformation
as an offset from the bone's rest position.
@type matrix: list [[float]]
@param mode: True for armature/world space, False for bone space
@type mode: boolean
"""
def setFrameProperty(prop):
"""
@param prop: A string specifying the property of the object that will be updated with the action frame number.