moved more attributes from getattr into PyAttributeDef's
This commit is contained in:
@@ -1025,6 +1025,7 @@ 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_RW_FUNCTION("action", BL_ActionActuator, pyattr_get_action, pyattr_set_action),
|
||||
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),
|
||||
@@ -1036,10 +1037,6 @@ PyAttributeDef BL_ActionActuator::Attributes[] = {
|
||||
};
|
||||
|
||||
PyObject* BL_ActionActuator::py_getattro(PyObject *attr) {
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str, "action"))
|
||||
return PyString_FromString(m_action->id.name+2);
|
||||
|
||||
PyObject* object = py_getattro_self(Attributes, this, attr);
|
||||
if (object != NULL)
|
||||
return object;
|
||||
@@ -1047,39 +1044,44 @@ PyObject* BL_ActionActuator::py_getattro(PyObject *attr) {
|
||||
}
|
||||
|
||||
int BL_ActionActuator::py_setattro(PyObject *attr, PyObject* value) {
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str, "action"))
|
||||
int ret = py_setattro_self(Attributes, this, attr, value);
|
||||
if (ret >= 0)
|
||||
return ret;
|
||||
return SCA_IActuator::py_setattro(attr, value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
PyObject* BL_ActionActuator::pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
BL_ActionActuator* self= static_cast<BL_ActionActuator*>(self_v);
|
||||
return PyString_FromString(self->GetAction()->id.name+2);
|
||||
}
|
||||
|
||||
int BL_ActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
|
||||
{
|
||||
BL_ActionActuator* self= static_cast<BL_ActionActuator*>(self_v);
|
||||
|
||||
if (!PyString_Check(value))
|
||||
{
|
||||
if (!PyString_Check(value))
|
||||
{
|
||||
PyErr_SetString(PyExc_ValueError, "expected a string");
|
||||
return 1;
|
||||
}
|
||||
|
||||
STR_String val = PyString_AsString(value);
|
||||
|
||||
if (val == "")
|
||||
{
|
||||
m_action = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bAction *action;
|
||||
|
||||
action = (bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
|
||||
|
||||
PyErr_SetString(PyExc_ValueError, "expected the string name of the action");
|
||||
return -1;
|
||||
}
|
||||
|
||||
bAction *action= NULL;
|
||||
STR_String val = PyString_AsString(value);
|
||||
|
||||
if (val != "")
|
||||
{
|
||||
(bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
|
||||
if (!action)
|
||||
{
|
||||
PyErr_SetString(PyExc_ValueError, "action not found!");
|
||||
return 1;
|
||||
}
|
||||
|
||||
m_action = action;
|
||||
return 0;
|
||||
}
|
||||
int ret = py_setattro_self(Attributes, this, attr, value);
|
||||
if (ret >= 0)
|
||||
return ret;
|
||||
return SCA_IActuator::py_setattro(attr, value);
|
||||
}
|
||||
|
||||
self->SetAction(action);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -81,6 +81,9 @@ public:
|
||||
virtual void ProcessReplica();
|
||||
|
||||
void SetBlendTime (float newtime);
|
||||
|
||||
bAction* GetAction() { return m_action; }
|
||||
void SetAction(bAction* act) { m_action= act; }
|
||||
|
||||
//Deprecated ----->
|
||||
KX_PYMETHOD_DOC(BL_ActionActuator,SetAction);
|
||||
@@ -113,6 +116,9 @@ public:
|
||||
virtual PyObject* py_getattro(PyObject* attr);
|
||||
virtual int py_setattro(PyObject* attr, PyObject* value);
|
||||
|
||||
static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static int pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||
|
||||
/* attribute check */
|
||||
static int CheckFrame(void *self, const PyAttributeDef*)
|
||||
{
|
||||
@@ -151,8 +157,8 @@ public:
|
||||
PyErr_SetString(PyExc_ValueError, "invalid type supplied");
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
void SetStartTime(float curtime);
|
||||
|
||||
@@ -474,6 +474,7 @@ PyAttributeDef BL_ShapeActionActuator::Attributes[] = {
|
||||
KX_PYATTRIBUTE_FLOAT_RW("start", 0, MAXFRAMEF, BL_ShapeActionActuator, m_startframe),
|
||||
KX_PYATTRIBUTE_FLOAT_RW("end", 0, MAXFRAMEF, BL_ShapeActionActuator, m_endframe),
|
||||
KX_PYATTRIBUTE_FLOAT_RW("blendin", 0, MAXFRAMEF, BL_ShapeActionActuator, m_blendin),
|
||||
KX_PYATTRIBUTE_RW_FUNCTION("action", BL_ShapeActionActuator, pyattr_get_action, pyattr_set_action),
|
||||
KX_PYATTRIBUTE_SHORT_RW("priority", 0, 100, false, BL_ShapeActionActuator, m_priority),
|
||||
KX_PYATTRIBUTE_FLOAT_RW_CHECK("frame", 0, MAXFRAMEF, BL_ShapeActionActuator, m_localtime, CheckFrame),
|
||||
KX_PYATTRIBUTE_STRING_RW("property", 0, 31, false, BL_ShapeActionActuator, m_propname),
|
||||
@@ -485,9 +486,6 @@ PyAttributeDef BL_ShapeActionActuator::Attributes[] = {
|
||||
|
||||
|
||||
PyObject* BL_ShapeActionActuator::py_getattro(PyObject* attr) {
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str, "action"))
|
||||
return PyString_FromString(m_action->id.name+2);
|
||||
PyObject* object = py_getattro_self(Attributes, this, attr);
|
||||
if (object != NULL)
|
||||
return object;
|
||||
@@ -495,37 +493,6 @@ PyObject* BL_ShapeActionActuator::py_getattro(PyObject* attr) {
|
||||
}
|
||||
|
||||
int BL_ShapeActionActuator::py_setattro(PyObject *attr, PyObject* value) {
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str, "action"))
|
||||
{
|
||||
if (!PyString_Check(value))
|
||||
{
|
||||
PyErr_SetString(PyExc_ValueError, "expected a string");
|
||||
return 1;
|
||||
}
|
||||
|
||||
STR_String val = PyString_AsString(value);
|
||||
|
||||
if (val == "")
|
||||
{
|
||||
m_action = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bAction *action;
|
||||
|
||||
action = (bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
|
||||
|
||||
|
||||
if (!action)
|
||||
{
|
||||
PyErr_SetString(PyExc_ValueError, "action not found!");
|
||||
return 1;
|
||||
}
|
||||
|
||||
m_action = action;
|
||||
return 0;
|
||||
}
|
||||
int ret = py_setattro_self(Attributes, this, attr, value);
|
||||
if (ret >= 0)
|
||||
return ret;
|
||||
@@ -916,3 +883,36 @@ PyObject* BL_ShapeActionActuator::PySetType(PyObject* self,
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyObject* BL_ShapeActionActuator::pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
BL_ShapeActionActuator* self= static_cast<BL_ShapeActionActuator*>(self_v);
|
||||
return PyString_FromString(self->GetAction()->id.name+2);
|
||||
}
|
||||
|
||||
int BL_ShapeActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
|
||||
{
|
||||
BL_ShapeActionActuator* self= static_cast<BL_ShapeActionActuator*>(self_v);
|
||||
/* exact copy of BL_ActionActuator's function from here down */
|
||||
if (!PyString_Check(value))
|
||||
{
|
||||
PyErr_SetString(PyExc_ValueError, "expected the string name of the action");
|
||||
return -1;
|
||||
}
|
||||
|
||||
bAction *action= NULL;
|
||||
STR_String val = PyString_AsString(value);
|
||||
|
||||
if (val != "")
|
||||
{
|
||||
(bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
|
||||
if (action==NULL)
|
||||
{
|
||||
PyErr_SetString(PyExc_ValueError, "action not found!");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
self->SetAction(action);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -79,6 +79,9 @@ public:
|
||||
|
||||
void SetBlendTime (float newtime);
|
||||
void BlendShape(struct Key* key, float weigth);
|
||||
|
||||
bAction* GetAction() { return m_action; }
|
||||
void SetAction(bAction* act) { m_action= act; }
|
||||
|
||||
KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetAction);
|
||||
KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetBlendin);
|
||||
@@ -106,6 +109,9 @@ public:
|
||||
virtual PyObject* py_getattro(PyObject* attr);
|
||||
virtual int py_setattro(PyObject* attr, PyObject* value);
|
||||
|
||||
static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static int pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||
|
||||
static int CheckBlendTime(void *self, const PyAttributeDef*)
|
||||
{
|
||||
BL_ShapeActionActuator* act = reinterpret_cast<BL_ShapeActionActuator*>(self);
|
||||
|
||||
@@ -454,9 +454,8 @@ PyAttributeDef SCA_ISensor::Attributes[] = {
|
||||
KX_PYATTRIBUTE_INT_RW("frequency",0,100000,true,SCA_ISensor,m_pulse_frequency),
|
||||
KX_PYATTRIBUTE_BOOL_RW("invert",SCA_ISensor,m_invert),
|
||||
KX_PYATTRIBUTE_BOOL_RW("level",SCA_ISensor,m_level),
|
||||
// make these properties read-only in _setaddr, must still implement them in py_getattro
|
||||
KX_PYATTRIBUTE_DUMMY("triggered"),
|
||||
KX_PYATTRIBUTE_DUMMY("positive"),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("triggered", SCA_ISensor, pyattr_get_triggered),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("positive", SCA_ISensor, pyattr_get_positive),
|
||||
{ NULL } //Sentinel
|
||||
};
|
||||
|
||||
@@ -466,20 +465,6 @@ SCA_ISensor::py_getattro(PyObject *attr)
|
||||
PyObject* object = py_getattro_self(Attributes, this, attr);
|
||||
if (object != NULL)
|
||||
return object;
|
||||
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str, "triggered"))
|
||||
{
|
||||
int retval = 0;
|
||||
if (SCA_PythonController::m_sCurrentController)
|
||||
retval = SCA_PythonController::m_sCurrentController->IsTriggered(this);
|
||||
return PyInt_FromLong(retval);
|
||||
}
|
||||
if (!strcmp(attr_str, "positive"))
|
||||
{
|
||||
int retval = IsPositiveTrigger();
|
||||
return PyInt_FromLong(retval);
|
||||
}
|
||||
py_getattro_up(SCA_ILogicBrick);
|
||||
}
|
||||
|
||||
@@ -490,4 +475,20 @@ int SCA_ISensor::py_setattro(PyObject *attr, PyObject *value)
|
||||
return ret;
|
||||
return SCA_ILogicBrick::py_setattro(attr, value);
|
||||
}
|
||||
|
||||
PyObject* SCA_ISensor::pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
|
||||
int retval = 0;
|
||||
if (SCA_PythonController::m_sCurrentController)
|
||||
retval = SCA_PythonController::m_sCurrentController->IsTriggered(self);
|
||||
return PyInt_FromLong(retval);
|
||||
}
|
||||
|
||||
PyObject* SCA_ISensor::pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
|
||||
return PyInt_FromLong(self->IsPositiveTrigger());
|
||||
}
|
||||
|
||||
/* eof */
|
||||
|
||||
@@ -154,6 +154,9 @@ public:
|
||||
KX_PYMETHOD_DOC(SCA_ISensor,SetLevel);
|
||||
//<------
|
||||
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,reset);
|
||||
|
||||
static PyObject* pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static PyObject* pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
};
|
||||
|
||||
#endif //__SCA_ISENSOR
|
||||
|
||||
@@ -333,38 +333,18 @@ PyAttributeDef SCA_JoystickSensor::Attributes[] = {
|
||||
KX_PYATTRIBUTE_INT_RW("button",0,100,false,SCA_JoystickSensor,m_button),
|
||||
KX_PYATTRIBUTE_INT_LIST_RW_CHECK("axis",0,3,true,SCA_JoystickSensor,m_axis,2,CheckAxis),
|
||||
KX_PYATTRIBUTE_INT_LIST_RW_CHECK("hat",0,12,true,SCA_JoystickSensor,m_hat,2,CheckHat),
|
||||
// dummy attributes will just be read-only in py_setattro
|
||||
// you still need to defined them in py_getattro
|
||||
KX_PYATTRIBUTE_DUMMY("axisPosition"),
|
||||
KX_PYATTRIBUTE_DUMMY("numAxis"),
|
||||
KX_PYATTRIBUTE_DUMMY("numButtons"),
|
||||
KX_PYATTRIBUTE_DUMMY("numHats"),
|
||||
KX_PYATTRIBUTE_DUMMY("connected"),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("axisPosition", SCA_JoystickSensor, pyattr_get_axis_position),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("numAxis", SCA_JoystickSensor, pyattr_get_num_axis),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("numButtons", SCA_JoystickSensor, pyattr_get_num_buttons),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("numHats", SCA_JoystickSensor, pyattr_get_num_hats),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("connected", SCA_JoystickSensor, pyattr_get_connected),
|
||||
|
||||
|
||||
{ NULL } //Sentinel
|
||||
};
|
||||
|
||||
PyObject* SCA_JoystickSensor::py_getattro(PyObject *attr) {
|
||||
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
|
||||
if (!strcmp(attr_str, "axisPosition")) {
|
||||
if(joy)
|
||||
return Py_BuildValue("[iiii]", joy->GetAxis10(), joy->GetAxis11(), joy->GetAxis20(), joy->GetAxis21());
|
||||
else
|
||||
return Py_BuildValue("[iiii]", 0, 0, 0, 0);
|
||||
}
|
||||
if (!strcmp(attr_str, "numAxis")) {
|
||||
return PyInt_FromLong( joy ? joy->GetNumberOfAxes() : 0 );
|
||||
}
|
||||
if (!strcmp(attr_str, "numButtons")) {
|
||||
return PyInt_FromLong( joy ? joy->GetNumberOfButtons() : 0 );
|
||||
}
|
||||
if (!strcmp(attr_str, "numHats")) {
|
||||
return PyInt_FromLong( joy ? joy->GetNumberOfHats() : 0 );
|
||||
}
|
||||
if (!strcmp(attr_str, "connected")) {
|
||||
return PyBool_FromLong( joy ? joy->Connected() : 0 );
|
||||
}
|
||||
PyObject* SCA_JoystickSensor::py_getattro(PyObject *attr)
|
||||
{
|
||||
PyObject* object = py_getattro_self(Attributes, this, attr);
|
||||
if (object != NULL)
|
||||
return object;
|
||||
@@ -532,7 +512,6 @@ const char SCA_JoystickSensor::GetButtonStatus_doc[] =
|
||||
"\tReturns a bool of the current pressed state of the specified button.\n";
|
||||
PyObject* SCA_JoystickSensor::PyGetButtonStatus( PyObject* self, PyObject* args ) {
|
||||
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
|
||||
PyObject *value;
|
||||
int index;
|
||||
|
||||
if(!PyArg_ParseTuple(args, "i", &index)){
|
||||
@@ -609,3 +588,41 @@ PyObject* SCA_JoystickSensor::PyConnected( PyObject* self ) {
|
||||
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
|
||||
return PyBool_FromLong( joy ? joy->Connected() : 0 );
|
||||
}
|
||||
|
||||
|
||||
PyObject* SCA_JoystickSensor::pyattr_get_axis_position(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
|
||||
SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
|
||||
|
||||
if(joy) return Py_BuildValue("[iiii]", joy->GetAxis10(), joy->GetAxis11(), joy->GetAxis20(), joy->GetAxis21());
|
||||
else return Py_BuildValue("[iiii]", 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
PyObject* SCA_JoystickSensor::pyattr_get_num_axis(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
|
||||
SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
|
||||
return PyInt_FromLong( joy ? joy->GetNumberOfAxes() : 0 );
|
||||
}
|
||||
|
||||
PyObject* SCA_JoystickSensor::pyattr_get_num_buttons(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
|
||||
SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
|
||||
return PyInt_FromLong( joy ? joy->GetNumberOfButtons() : 0 );
|
||||
}
|
||||
|
||||
PyObject* SCA_JoystickSensor::pyattr_get_num_hats(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
|
||||
SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
|
||||
return PyInt_FromLong( joy ? joy->GetNumberOfHats() : 0 );
|
||||
}
|
||||
|
||||
PyObject* SCA_JoystickSensor::pyattr_get_connected(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
|
||||
SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
|
||||
return PyBool_FromLong( joy ? joy->Connected() : 0 );
|
||||
}
|
||||
|
||||
@@ -148,6 +148,13 @@ public:
|
||||
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,NumberOfHats);
|
||||
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,Connected);
|
||||
|
||||
static PyObject* pyattr_get_axis_position(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static PyObject* pyattr_get_num_axis(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static PyObject* pyattr_get_num_buttons(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static PyObject* pyattr_get_num_hats(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static PyObject* pyattr_get_connected(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
|
||||
|
||||
/* attribute check */
|
||||
static int CheckAxis(void *self, const PyAttributeDef*)
|
||||
{
|
||||
|
||||
@@ -265,6 +265,8 @@ PyMethodDef SCA_PythonController::Methods[] = {
|
||||
};
|
||||
|
||||
PyAttributeDef SCA_PythonController::Attributes[] = {
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("state", SCA_PythonController, pyattr_get_state),
|
||||
KX_PYATTRIBUTE_RW_FUNCTION("script", SCA_PythonController, pyattr_get_script, pyattr_set_script),
|
||||
{ NULL } //Sentinel
|
||||
};
|
||||
|
||||
@@ -374,37 +376,19 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
|
||||
|
||||
PyObject* SCA_PythonController::py_getattro(PyObject *attr)
|
||||
{
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str,"state")) {
|
||||
return PyInt_FromLong(m_statemask);
|
||||
}
|
||||
if (!strcmp(attr_str,"script")) {
|
||||
return PyString_FromString(m_scriptText);
|
||||
}
|
||||
PyObject* object = py_getattro_self(Attributes, this, attr);
|
||||
if (object != NULL)
|
||||
return object;
|
||||
|
||||
py_getattro_up(SCA_IController);
|
||||
}
|
||||
|
||||
int SCA_PythonController::py_setattro(PyObject *attr, PyObject *value)
|
||||
{
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str,"state")) {
|
||||
PyErr_SetString(PyExc_AttributeError, "state is read only");
|
||||
return 1;
|
||||
}
|
||||
if (!strcmp(attr_str,"script")) {
|
||||
char *scriptArg = PyString_AsString(value);
|
||||
|
||||
if (scriptArg==NULL) {
|
||||
PyErr_SetString(PyExc_TypeError, "expected a string (script name)");
|
||||
return -1;
|
||||
}
|
||||
int ret = py_setattro_self(Attributes, this, attr, value);
|
||||
if (ret >= 0)
|
||||
return ret;
|
||||
|
||||
/* set scripttext sets m_bModified to true,
|
||||
so next time the script is needed, a reparse into byte code is done */
|
||||
this->SetScriptText(scriptArg);
|
||||
|
||||
return 1;
|
||||
}
|
||||
return SCA_IController::py_setattro(attr, value);
|
||||
}
|
||||
|
||||
@@ -548,4 +532,35 @@ PyObject* SCA_PythonController::PyGetState(PyObject* self)
|
||||
return PyInt_FromLong(m_statemask);
|
||||
}
|
||||
|
||||
PyObject* SCA_PythonController::pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
|
||||
return PyInt_FromLong(self->m_statemask);
|
||||
}
|
||||
|
||||
PyObject* SCA_PythonController::pyattr_get_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
|
||||
return PyString_FromString(self->m_scriptText);
|
||||
}
|
||||
|
||||
int SCA_PythonController::pyattr_set_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
|
||||
{
|
||||
SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
|
||||
|
||||
char *scriptArg = PyString_AsString(value);
|
||||
|
||||
if (scriptArg==NULL) {
|
||||
PyErr_SetString(PyExc_TypeError, "expected a string (script name)");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* set scripttext sets m_bModified to true,
|
||||
so next time the script is needed, a reparse into byte code is done */
|
||||
self->SetScriptText(scriptArg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* eof */
|
||||
|
||||
@@ -92,6 +92,10 @@ class SCA_PythonController : public SCA_IController
|
||||
KX_PYMETHOD_NOARGS(SCA_PythonController,GetScript);
|
||||
KX_PYMETHOD_NOARGS(SCA_PythonController,GetState);
|
||||
|
||||
static PyObject* pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static PyObject* pyattr_get_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static int pyattr_set_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -162,6 +162,7 @@ PyMethodDef SCA_RandomSensor::Methods[] = {
|
||||
|
||||
PyAttributeDef SCA_RandomSensor::Attributes[] = {
|
||||
KX_PYATTRIBUTE_BOOL_RO("lastDraw",SCA_RandomSensor,m_lastdraw),
|
||||
KX_PYATTRIBUTE_RW_FUNCTION("seed", SCA_RandomSensor, pyattr_get_seed, pyattr_set_seed),
|
||||
{NULL} //Sentinel
|
||||
};
|
||||
|
||||
@@ -169,11 +170,6 @@ PyObject* SCA_RandomSensor::py_getattro(PyObject *attr) {
|
||||
PyObject* object = py_getattro_self(Attributes, this, attr);
|
||||
if (object != NULL)
|
||||
return object;
|
||||
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str,"seed")) {
|
||||
return PyInt_FromLong(m_basegenerator->GetSeed());
|
||||
}
|
||||
py_getattro_up(SCA_ISensor);
|
||||
}
|
||||
|
||||
@@ -182,17 +178,6 @@ int SCA_RandomSensor::py_setattro(PyObject *attr, PyObject *value)
|
||||
int ret = py_setattro_self(Attributes, this, attr, value);
|
||||
if (ret >= 0)
|
||||
return ret;
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str,"seed")) {
|
||||
if (PyInt_Check(value)) {
|
||||
int ival = PyInt_AsLong(value);
|
||||
m_basegenerator->SetSeed(ival);
|
||||
return 0;
|
||||
} else {
|
||||
PyErr_SetString(PyExc_TypeError, "expected an integer");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return SCA_ISensor::py_setattro(attr, value);
|
||||
}
|
||||
|
||||
@@ -234,4 +219,22 @@ PyObject* SCA_RandomSensor::PyGetLastDraw(PyObject* self, PyObject* args, PyObje
|
||||
return PyInt_FromLong(m_lastdraw);
|
||||
}
|
||||
|
||||
|
||||
PyObject* SCA_RandomSensor::pyattr_get_seed(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
SCA_RandomSensor* self= static_cast<SCA_RandomSensor*>(self_v);
|
||||
return PyInt_FromLong(self->m_basegenerator->GetSeed());
|
||||
}
|
||||
|
||||
int SCA_RandomSensor::pyattr_set_seed(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
|
||||
{
|
||||
SCA_RandomSensor* self= static_cast<SCA_RandomSensor*>(self_v);
|
||||
if (!PyInt_Check(value)) {
|
||||
PyErr_SetString(PyExc_TypeError, "expected an integer");
|
||||
return -1;
|
||||
}
|
||||
self->m_basegenerator->SetSeed(PyInt_AsLong(value));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* eof */
|
||||
|
||||
@@ -69,6 +69,9 @@ public:
|
||||
KX_PYMETHOD_DOC(SCA_RandomSensor,GetSeed);
|
||||
/* 3. getSeed */
|
||||
KX_PYMETHOD_DOC(SCA_RandomSensor,GetLastDraw);
|
||||
|
||||
static PyObject* pyattr_get_seed(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static int pyattr_set_seed(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -417,19 +417,12 @@ PyAttributeDef KX_CameraActuator::Attributes[] = {
|
||||
KX_PYATTRIBUTE_FLOAT_RW("max",-MAXFLOAT,MAXFLOAT,KX_CameraActuator,m_maxHeight),
|
||||
KX_PYATTRIBUTE_FLOAT_RW("height",-MAXFLOAT,MAXFLOAT,KX_CameraActuator,m_height),
|
||||
KX_PYATTRIBUTE_BOOL_RW("xy",KX_CameraActuator,m_x),
|
||||
KX_PYATTRIBUTE_DUMMY("object"),
|
||||
KX_PYATTRIBUTE_RW_FUNCTION("object", KX_CameraActuator, pyattr_get_object, pyattr_set_object),
|
||||
{NULL}
|
||||
};
|
||||
|
||||
PyObject* KX_CameraActuator::py_getattro(PyObject *attr) {
|
||||
PyObject* object;
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str, "object")) {
|
||||
if (!m_ob) Py_RETURN_NONE;
|
||||
else return m_ob->AddRef();
|
||||
}
|
||||
|
||||
object = py_getattro_self(Attributes, this, attr);
|
||||
PyObject* object = py_getattro_self(Attributes, this, attr);
|
||||
if (object != NULL)
|
||||
return object;
|
||||
py_getattro_up(SCA_IActuator);
|
||||
@@ -437,24 +430,6 @@ PyObject* KX_CameraActuator::py_getattro(PyObject *attr) {
|
||||
|
||||
int KX_CameraActuator::py_setattro(PyObject *attr, PyObject* value) {
|
||||
int ret;
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str, "object")) {
|
||||
KX_GameObject *gameobj;
|
||||
|
||||
if (!ConvertPythonToGameObject(value, &gameobj, true))
|
||||
return 1; // ConvertPythonToGameObject sets the error
|
||||
|
||||
if (m_ob != NULL)
|
||||
m_ob->UnregisterActuator(this);
|
||||
|
||||
m_ob = (SCA_IObject*)gameobj;
|
||||
|
||||
if (m_ob)
|
||||
m_ob->RegisterActuator(this);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = py_setattro_self(Attributes, this, attr, value);
|
||||
if (ret >= 0)
|
||||
return ret;
|
||||
@@ -623,4 +598,30 @@ PyObject* KX_CameraActuator::PyGetXY(PyObject* self,
|
||||
return PyInt_FromLong(m_x);
|
||||
}
|
||||
|
||||
PyObject* KX_CameraActuator::pyattr_get_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
KX_CameraActuator* self= static_cast<KX_CameraActuator*>(self_v);
|
||||
if (self->m_ob==NULL)
|
||||
Py_RETURN_NONE;
|
||||
else
|
||||
return self->m_ob->AddRef();
|
||||
}
|
||||
|
||||
int KX_CameraActuator::pyattr_set_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
|
||||
{
|
||||
KX_CameraActuator* self= static_cast<KX_CameraActuator*>(self_v);
|
||||
KX_GameObject *gameobj;
|
||||
|
||||
if (!ConvertPythonToGameObject(value, &gameobj, true))
|
||||
return 1; // ConvertPythonToGameObject sets the error
|
||||
|
||||
if (self->m_ob)
|
||||
self->m_ob->UnregisterActuator(self);
|
||||
|
||||
if (self->m_ob = (SCA_IObject*)gameobj)
|
||||
self->m_ob->RegisterActuator(self);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* eof */
|
||||
|
||||
@@ -135,6 +135,9 @@ private :
|
||||
KX_PYMETHOD_DOC(KX_CameraActuator,GetHeight);
|
||||
KX_PYMETHOD_DOC(KX_CameraActuator,SetXY);
|
||||
KX_PYMETHOD_DOC(KX_CameraActuator,GetXY);
|
||||
|
||||
static PyObject* pyattr_get_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static int pyattr_set_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -286,8 +286,8 @@ PyAttributeDef KX_TouchSensor::Attributes[] = {
|
||||
KX_PYATTRIBUTE_STRING_RW("property",0,100,false,KX_TouchSensor,m_touchedpropname),
|
||||
KX_PYATTRIBUTE_BOOL_RW("useMaterial",KX_TouchSensor,m_bFindMaterial),
|
||||
KX_PYATTRIBUTE_BOOL_RW("pulseCollisions",KX_TouchSensor,m_bTouchPulse),
|
||||
KX_PYATTRIBUTE_DUMMY("objectHit"),
|
||||
KX_PYATTRIBUTE_DUMMY("objectHitList"),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("objectHit", KX_TouchSensor, pyattr_get_object_hit),
|
||||
KX_PYATTRIBUTE_RO_FUNCTION("objectHitList", KX_TouchSensor, pyattr_get_object_hit_list),
|
||||
{ NULL } //Sentinel
|
||||
};
|
||||
|
||||
@@ -295,17 +295,7 @@ PyObject* KX_TouchSensor::py_getattro(PyObject *attr)
|
||||
{
|
||||
PyObject* object= py_getattro_self(Attributes, this, attr);
|
||||
if (object != NULL)
|
||||
return object;
|
||||
|
||||
char *attr_str= PyString_AsString(attr);
|
||||
if (!strcmp(attr_str, "objectHit")) {
|
||||
if (m_hitObject) return m_hitObject->AddRef();
|
||||
else Py_RETURN_NONE;
|
||||
}
|
||||
if (!strcmp(attr_str, "objectHitList")) {
|
||||
return m_colliders->AddRef();
|
||||
}
|
||||
|
||||
return object;
|
||||
py_getattro_up(SCA_ISensor);
|
||||
}
|
||||
|
||||
@@ -412,4 +402,21 @@ PyObject* KX_TouchSensor::PySetTouchMaterial(PyObject* self, PyObject *value)
|
||||
}
|
||||
#endif
|
||||
|
||||
PyObject* KX_TouchSensor::pyattr_get_object_hit(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
KX_TouchSensor* self= static_cast<KX_TouchSensor*>(self_v);
|
||||
|
||||
if (self->m_hitObject)
|
||||
return self->m_hitObject->AddRef();
|
||||
else
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyObject* KX_TouchSensor::pyattr_get_object_hit_list(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||
{
|
||||
KX_TouchSensor* self= static_cast<KX_TouchSensor*>(self_v);
|
||||
return self->m_colliders->AddRef();
|
||||
}
|
||||
|
||||
|
||||
/* eof */
|
||||
|
||||
@@ -140,6 +140,10 @@ public:
|
||||
#endif
|
||||
//<-----
|
||||
|
||||
static PyObject* pyattr_get_object_hit(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
static PyObject* pyattr_get_object_hit_list(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif //__KX_TOUCHSENSOR
|
||||
|
||||
Reference in New Issue
Block a user