BGE Python API

Separate getting a normal attribute and getting __dict__, was having to do too a check for __dict__ on each class (multiple times per getattro call from python) when its not used that often.
This commit is contained in:
Campbell Barton 2009-04-20 23:17:52 +00:00
parent 2d0d06f642
commit 217bbb7800
123 changed files with 357 additions and 79 deletions

@ -1020,6 +1020,10 @@ PyObject* BL_ActionActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
PyObject* BL_ActionActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int BL_ActionActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}

@ -114,6 +114,7 @@ public:
KX_PYMETHOD_DOC(BL_ActionActuator,setChannel);
virtual PyObject* py_getattro(PyObject* attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject* attr, PyObject* value);
static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);

@ -489,6 +489,10 @@ PyObject* BL_ShapeActionActuator::py_getattro(PyObject* attr) {
py_getattro_up(SCA_IActuator);
}
PyObject* BL_ShapeActionActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int BL_ShapeActionActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}

@ -107,6 +107,7 @@ public:
KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetType);
virtual PyObject* py_getattro(PyObject* attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject* attr, PyObject* value);
static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);

@ -273,6 +273,10 @@ PyObject* CListValue::py_getattro(PyObject* attr) {
py_getattro_up(CValue);
}
PyObject* CListValue::py_getattro_dict() {
py_getattro_dict_up(CValue);
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction

@ -60,6 +60,7 @@ public:
bool CheckEqual(CValue* first,CValue* second);
virtual PyObject* py_getattro(PyObject* attr);
virtual PyObject* py_getattro_dict();
virtual PyObject* py_repr(void) {
PyObject *py_proxy= this->GetProxy();
PyObject *py_list= PySequence_List(py_proxy);

@ -143,7 +143,13 @@ PyObject *PyObjectPlus::py_base_getattro(PyObject * self, PyObject *attr)
PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
return NULL;
}
return self_plus->py_getattro(attr);
PyObject *ret= self_plus->py_getattro(attr);
if(ret==NULL && (strcmp(PyString_AsString(attr), "__dict__")==0))
ret= self_plus->py_getattro_dict();
return ret;
}
/* This should be the entry in Type since it takes the C++ class from PyObjectPlus_Proxy */
@ -177,9 +183,6 @@ PyObject *PyObjectPlus::py_getattro(PyObject* attr)
{
PyObject *descr = PyDict_GetItem(Type.tp_dict, attr); \
if (descr == NULL) {
if (strcmp(PyString_AsString(attr), "__dict__")==0) {
return py_getattr_dict(NULL, Type.tp_dict); /* no Attributes yet */
}
PyErr_Format(PyExc_AttributeError, "attribute \"%s\" not found", PyString_AsString(attr));
return NULL;
} else {
@ -196,6 +199,10 @@ PyObject *PyObjectPlus::py_getattro(PyObject* attr)
}
}
PyObject* PyObjectPlus::py_getattro_dict() {
return py_getattr_dict(NULL, Type.tp_dict);
}
int PyObjectPlus::py_delattro(PyObject* attr)
{
PyErr_SetString(PyExc_AttributeError, "attribute cant be deleted");

@ -130,16 +130,12 @@ typedef struct {
} \
} else { \
PyErr_Clear(); \
PyObject *rvalue= Parent::py_getattro(attr); \
\
if (strcmp(PyString_AsString(attr), "__dict__")==0) { \
return py_getattr_dict(rvalue, Type.tp_dict); \
} \
\
return rvalue; \
return Parent::py_getattro(attr); \
} \
return NULL;
#define py_getattro_dict_up(Parent) \
return py_getattr_dict(Parent::py_getattro_dict(), Type.tp_dict);
/*
* nonzero values are an error for setattr
@ -434,6 +430,7 @@ public:
/* These are all virtual python methods that are defined in each class
* Our own fake subclassing calls these on each class, then calls the parent */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_delattro(PyObject *attr);
virtual int py_setattro(PyObject *attr, PyObject *value);
virtual PyObject* py_repr(void);

@ -612,6 +612,10 @@ PyObject* CValue::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
PyObject* CValue::py_getattro_dict() {
py_getattro_dict_up(PyObjectPlus);
}
CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
{

@ -225,6 +225,7 @@ public:
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual PyObject* ConvertValueToPython() {
return NULL;
}

@ -157,6 +157,10 @@ PyObject* SCA_2DFilterActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
PyObject* SCA_2DFilterActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int SCA_2DFilterActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);

@ -71,6 +71,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
};

@ -145,4 +145,8 @@ PyObject* SCA_ANDController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
PyObject* SCA_ANDController::py_getattro_dict() {
py_getattro_dict_up(SCA_IController);
}
/* eof */

@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
};

@ -165,6 +165,10 @@ PyObject* SCA_ActuatorSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
PyObject* SCA_ActuatorSensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int SCA_ActuatorSensor::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_ISensor);
}

@ -62,6 +62,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* 3. setProperty */

@ -143,4 +143,8 @@ PyObject* SCA_AlwaysSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
PyObject* SCA_AlwaysSensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
/* eof */

@ -53,7 +53,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
};

@ -182,6 +182,10 @@ PyObject* SCA_DelaySensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
PyObject* SCA_DelaySensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int SCA_DelaySensor::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_ISensor);
}

@ -61,6 +61,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* setProperty */

@ -60,6 +60,7 @@ public:
/* --------------------------------------------------------------------- */
// virtual PyObject* py_getattro(PyObject *attr);
// virtual PyObject* py_getattro_dict();
};

@ -278,12 +278,15 @@ int SCA_ILogicBrick::CheckProperty(void *self, const PyAttributeDef *attrdef)
return 0;
}
PyObject*
SCA_ILogicBrick::py_getattro(PyObject *attr)
PyObject* SCA_ILogicBrick::py_getattro(PyObject *attr)
{
py_getattro_up(CValue);
}
PyObject* SCA_ILogicBrick::py_getattro_dict() {
py_getattro_dict_up(CValue);
}
int SCA_ILogicBrick::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(CValue);

@ -80,6 +80,7 @@ public:
virtual bool LessComparedTo(SCA_ILogicBrick* other);
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
static class SCA_LogicManager* m_sCurrentLogicManager;

@ -418,3 +418,6 @@ PyObject* SCA_IObject::py_getattro(PyObject *attr) {
py_getattro_up(CValue);
}
PyObject* SCA_IObject::py_getattro_dict() {
py_getattro_dict_up(CValue);
}

@ -146,6 +146,7 @@ public:
// here come the python forwarded methods
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int GetGameObjectType() {return -1;}

@ -459,12 +459,15 @@ PyAttributeDef SCA_ISensor::Attributes[] = {
{ NULL } //Sentinel
};
PyObject*
SCA_ISensor::py_getattro(PyObject *attr)
PyObject* SCA_ISensor::py_getattro(PyObject *attr)
{
py_getattro_up(SCA_ILogicBrick);
}
PyObject* SCA_ISensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ILogicBrick);
}
int SCA_ISensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ILogicBrick);

@ -137,6 +137,7 @@ public:
/* Python functions: */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->

@ -339,6 +339,10 @@ PyObject* SCA_JoystickSensor::py_getattro(PyObject *attr)
py_getattro_up(SCA_ISensor);
}
PyObject* SCA_JoystickSensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int SCA_JoystickSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);

@ -123,6 +123,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* Joystick Index */

@ -664,12 +664,15 @@ PyAttributeDef SCA_KeyboardSensor::Attributes[] = {
{ NULL } //Sentinel
};
PyObject*
SCA_KeyboardSensor::py_getattro(PyObject *attr)
PyObject* SCA_KeyboardSensor::py_getattro(PyObject *attr)
{
py_getattro_up(SCA_ISensor);
}
PyObject* SCA_KeyboardSensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int SCA_KeyboardSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);

@ -111,6 +111,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->

@ -342,6 +342,10 @@ PyObject* SCA_MouseSensor::py_getattro(PyObject *attr)
py_getattro_up(SCA_ISensor);
}
PyObject* SCA_MouseSensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int SCA_MouseSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);

@ -110,6 +110,7 @@ class SCA_MouseSensor : public SCA_ISensor
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->

@ -145,4 +145,8 @@ PyObject* SCA_NANDController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
PyObject* SCA_NANDController::py_getattro_dict() {
py_getattro_dict_up(SCA_IController);
}
/* eof */

@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
};

@ -145,4 +145,8 @@ PyObject* SCA_NORController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
PyObject* SCA_NORController::py_getattro_dict() {
py_getattro_dict_up(SCA_IController);
}
/* eof */

@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
};

@ -138,4 +138,8 @@ PyObject* SCA_ORController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
PyObject* SCA_ORController::py_getattro_dict() {
py_getattro_dict_up(SCA_IController);
}
/* eof */

@ -50,6 +50,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
};
#endif //__KX_ORCONTROLLER

@ -279,6 +279,10 @@ PyObject* SCA_PropertyActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
PyObject* SCA_PropertyActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int SCA_PropertyActuator::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_IActuator);
}

@ -87,6 +87,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// python wrapped methods

@ -356,6 +356,10 @@ PyObject* SCA_PropertySensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
PyObject* SCA_PropertySensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int SCA_PropertySensor::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_ISensor);
}

@ -90,6 +90,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. getType */

@ -395,6 +395,10 @@ PyObject* SCA_RandomActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
PyObject* SCA_RandomActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int SCA_RandomActuator::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IActuator);

@ -97,6 +97,7 @@ class SCA_RandomActuator : public SCA_IActuator
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
static PyObject* pyattr_get_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);

@ -170,6 +170,10 @@ PyObject* SCA_RandomSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
PyObject* SCA_RandomSensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int SCA_RandomSensor::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_ISensor);

@ -61,6 +61,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. setSeed */

@ -149,4 +149,8 @@ PyObject* SCA_XNORController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
PyObject* SCA_XNORController::py_getattro_dict() {
py_getattro_dict_up(SCA_IController);
}
/* eof */

@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
};

@ -149,4 +149,8 @@ PyObject* SCA_XORController::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IController);
}
PyObject* SCA_XORController::py_getattro_dict() {
py_getattro_dict_up(SCA_IController);
}
/* eof */

@ -49,6 +49,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
};

@ -734,6 +734,10 @@ PyObject* BL_Shader::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
PyObject* BL_Shader::py_getattro_dict() {
py_getattro_dict_up(PyObjectPlus);
}
PyMethodDef BL_Shader::Methods[] =
{

@ -203,6 +203,7 @@ public:
// Python interface
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual PyObject* py_repr(void) { return PyString_FromFormat("BL_Shader\n\tvertex shader:%s\n\n\tfragment shader%s\n\n", vertProg, fragProg); }
// -----------------------------------

@ -157,6 +157,10 @@ PyObject* KX_NetworkMessageActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
PyObject* KX_NetworkMessageActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_NetworkMessageActuator::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_IActuator);
}

@ -62,6 +62,7 @@ public:
/* ------------------------------------------------------------ */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->

@ -227,6 +227,10 @@ PyObject* KX_NetworkMessageSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
PyObject* KX_NetworkMessageSensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int KX_NetworkMessageSensor::py_setattro(PyObject *attr, PyObject *value) {
return SCA_ISensor::py_setattro(attr, value);
}

@ -73,6 +73,7 @@ public:
/* ------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->

@ -784,6 +784,10 @@ PyObject* KX_BlenderMaterial::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
PyObject* KX_BlenderMaterial::py_getattro_dict() {
py_getattro_dict_up(PyObjectPlus);
}
int KX_BlenderMaterial::py_setattro(PyObject *attr, PyObject *pyvalue)
{
return PyObjectPlus::py_setattro(attr, pyvalue);

@ -83,6 +83,7 @@ public:
// --------------------------------
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
virtual PyObject* py_repr(void) { return PyString_FromString(mMaterial->matname.ReadPtr()); }

@ -220,6 +220,10 @@ PyObject* KX_CDActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
PyObject* KX_CDActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_CDActuator::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IActuator);

@ -82,6 +82,7 @@ public:
/* -------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->

@ -544,6 +544,10 @@ PyObject* KX_Camera::py_getattro(PyObject *attr)
py_getattro_up(KX_GameObject);
}
PyObject* KX_Camera::py_getattro_dict() {
py_getattro_dict_up(KX_GameObject);
}
int KX_Camera::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(KX_GameObject);

@ -278,6 +278,7 @@ public:
KX_PYMETHOD_DOC_NOARGS(KX_Camera, setOnTop);
virtual PyObject* py_getattro(PyObject *attr); /* lens, near, far, projection_matrix */
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
static PyObject* pyattr_get_perspective(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);

@ -425,6 +425,10 @@ PyObject* KX_CameraActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
PyObject* KX_CameraActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_CameraActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}

@ -121,6 +121,7 @@ private :
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
/* set object to look at */

@ -640,6 +640,10 @@ PyObject* KX_ConstraintActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
PyObject* KX_ConstraintActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_ConstraintActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);

@ -144,6 +144,7 @@ protected:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
static int pyattr_check_direction(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);

@ -87,12 +87,16 @@ PyParentObject KX_ConstraintWrapper::Parents[] = {
NULL
};
PyObject* KX_ConstraintWrapper::py_getattro(PyObject *attr)
//here you can search for existing data members (like mass,friction etc.)
PyObject* KX_ConstraintWrapper::py_getattro(PyObject *attr)
{
//here you can search for existing data members (like mass,friction etc.)
py_getattro_up(PyObjectPlus);
}
PyObject* KX_ConstraintWrapper::py_getattro_dict() {
py_getattro_dict_up(PyObjectPlus);
}
int KX_ConstraintWrapper::py_setattro(PyObject *attr,PyObject* pyobj)
{
int result = 1;

@ -36,6 +36,7 @@ class KX_ConstraintWrapper : public PyObjectPlus
{
Py_Header;
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
public:
KX_ConstraintWrapper(PHY_ConstraintType ctype,int constraintId,class PHY_IPhysicsEnvironment* physenv,PyTypeObject *T = &Type);

@ -253,12 +253,15 @@ PyAttributeDef KX_GameActuator::Attributes[] = {
{ NULL } //Sentinel
};
PyObject*
KX_GameActuator::py_getattro(PyObject *attr)
PyObject* KX_GameActuator::py_getattro(PyObject *attr)
{
py_getattro_up(SCA_IActuator);
}
PyObject* KX_GameActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_GameActuator::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(SCA_IActuator);

@ -78,6 +78,7 @@ protected:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated functions ----->

@ -1153,8 +1153,6 @@ PyAttributeDef KX_GameObject::Attributes[] = {
KX_PYATTRIBUTE_RW_FUNCTION("localScaling", KX_GameObject, pyattr_get_localScaling, pyattr_set_localScaling),
KX_PYATTRIBUTE_RO_FUNCTION("worldScaling", KX_GameObject, pyattr_get_worldScaling),
KX_PYATTRIBUTE_RO_FUNCTION("__dict__", KX_GameObject, pyattr_get_dir_dict),
/* Experemental, dont rely on these yet */
KX_PYATTRIBUTE_RO_FUNCTION("sensors", KX_GameObject, pyattr_get_sensors),
KX_PYATTRIBUTE_RO_FUNCTION("controllers", KX_GameObject, pyattr_get_controllers),
@ -1703,37 +1701,6 @@ PyObject* KX_GameObject::pyattr_get_actuators(void *self_v, const KX_PYATTRIBUTE
return resultlist;
}
/* __dict__ only for the purpose of giving useful dir() results */
PyObject* KX_GameObject::pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
PyObject *dict_str = PyString_FromString("__dict__");
PyObject *dict= py_getattr_dict(self->SCA_IObject::py_getattro(dict_str), Type.tp_dict);
Py_DECREF(dict_str);
if(dict==NULL)
return NULL;
/* Not super fast getting as a list then making into dict keys but its only for dir() */
PyObject *list= self->ConvertKeysToPython();
if(list)
{
int i;
for(i=0; i<PyList_Size(list); i++)
PyDict_SetItem(dict, PyList_GET_ITEM(list, i), Py_None);
}
else
PyErr_Clear();
Py_DECREF(list);
/* Add m_attr_dict if we have it */
if(self->m_attr_dict)
PyDict_Update(dict, self->m_attr_dict);
return dict;
}
/* We need these because the macros have a return in them */
PyObject* KX_GameObject::py_getattro__internal(PyObject *attr)
{
@ -1772,6 +1739,35 @@ PyObject* KX_GameObject::py_getattro(PyObject *attr)
return object;
}
PyObject* KX_GameObject::py_getattro_dict() {
//py_getattro_dict_up(SCA_IObject);
PyObject *dict= py_getattr_dict(SCA_IObject::py_getattro_dict(), Type.tp_dict);
if(dict==NULL)
return NULL;
/* normally just return this but KX_GameObject has some more items */
/* Not super fast getting as a list then making into dict keys but its only for dir() */
PyObject *list= ConvertKeysToPython();
if(list)
{
int i;
for(i=0; i<PyList_Size(list); i++)
PyDict_SetItem(dict, PyList_GET_ITEM(list, i), Py_None);
}
else
PyErr_Clear();
Py_DECREF(list);
/* Add m_attr_dict if we have it */
if(m_attr_dict)
PyDict_Update(dict, m_attr_dict);
return dict;
}
int KX_GameObject::py_setattro(PyObject *attr, PyObject *value) // py_setattro method
{
int ret;

@ -816,6 +816,7 @@ public:
*/
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value); // py_setattro method
virtual int py_delattro(PyObject *attr);
virtual PyObject* py_repr(void)
@ -904,9 +905,6 @@ public:
static int pyattr_set_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static PyObject* pyattr_get_meshes(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
/* for dir(), python3 uses __dir__() */
static PyObject* pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
/* Experemental! */
static PyObject* pyattr_get_sensors(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_controllers(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);

@ -477,6 +477,10 @@ PyObject* KX_IpoActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
PyObject* KX_IpoActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_IpoActuator::py_setattro(PyObject *attr, PyObject *value) // py_setattro method
{
py_setattro_up(SCA_IActuator);

@ -142,6 +142,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
//KX_PYMETHOD_DOC

@ -216,6 +216,10 @@ PyObject* KX_LightObject::py_getattro(PyObject *attr)
py_getattro_up(KX_GameObject);
}
PyObject* KX_LightObject::py_getattro_dict() {
py_getattro_dict_up(KX_GameObject);
}
int KX_LightObject::py_setattro(PyObject *attr, PyObject *pyvalue)
{

@ -63,6 +63,7 @@ public:
void Update();
virtual PyObject* py_getattro(PyObject *attr); /* lens, near, far, projection_matrix */
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
virtual bool IsLight(void) { return true; }

@ -108,6 +108,10 @@ PyObject* KX_MeshProxy::py_getattro(PyObject *attr)
py_getattro_up(SCA_IObject);
}
PyObject* KX_MeshProxy::py_getattro_dict() {
py_getattro_dict_up(SCA_IObject);
}
int KX_MeshProxy::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IObject);

@ -58,6 +58,7 @@ public:
// stuff for python integration
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
KX_PYMETHOD(KX_MeshProxy,GetNumMaterials); // Deprecated

@ -387,6 +387,10 @@ PyObject* KX_MouseFocusSensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_MouseSensor);
}
PyObject* KX_MouseFocusSensor::py_getattro_dict() {
py_getattro_dict_up(SCA_MouseSensor);
}
const char KX_MouseFocusSensor::GetHitObject_doc[] =
"getHitObject()\n"

@ -89,7 +89,8 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
KX_PYMETHOD_DOC_NOARGS(KX_MouseFocusSensor,GetRayTarget);
KX_PYMETHOD_DOC_NOARGS(KX_MouseFocusSensor,GetRaySource);

@ -334,6 +334,10 @@ PyObject* KX_NearSensor::py_getattro(PyObject *attr)
py_getattro_up(KX_TouchSensor);
}
PyObject* KX_NearSensor::py_getattro_dict() {
py_getattro_dict_up(KX_TouchSensor);
}
int KX_NearSensor::py_setattro(PyObject*attr, PyObject* value)
{
py_setattro_up(KX_TouchSensor);

@ -83,6 +83,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
//No methods

@ -340,6 +340,10 @@ PyObject* KX_ObjectActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
};
PyObject* KX_ObjectActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
/* 1. set ------------------------------------------------------------------ */
/* Removed! */

@ -154,6 +154,7 @@ public:
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetForce);
KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetForce);

@ -211,6 +211,10 @@ PyObject* KX_ParentActuator::py_getattro(PyObject *attr) {
py_getattro_up(SCA_IActuator);
}
PyObject* KX_ParentActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_ParentActuator::py_setattro(PyObject *attr, PyObject* value) {
py_setattro_up(SCA_IActuator);
}

@ -77,6 +77,7 @@ class KX_ParentActuator : public SCA_IActuator
/* --------------------------------------------------------------------- */
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
/* These are used to get and set m_ob */

@ -136,11 +136,14 @@ PyParentObject KX_PhysicsObjectWrapper::Parents[] = {
NULL
};
PyObject* KX_PhysicsObjectWrapper::py_getattro(PyObject *attr)
PyObject* KX_PhysicsObjectWrapper::py_getattro(PyObject *attr)
{
py_getattro_up(PyObjectPlus);
}
PyObject* KX_PhysicsObjectWrapper::py_getattro_dict() {
py_getattro_dict_up(PyObjectPlus);
}
int KX_PhysicsObjectWrapper::py_setattro(PyObject *attr,PyObject *pyobj)
{

@ -37,6 +37,7 @@ class KX_PhysicsObjectWrapper : public PyObjectPlus
Py_Header;
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
public:
KX_PhysicsObjectWrapper(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsEnvironment* physenv,PyTypeObject *T = &Type);

@ -159,6 +159,10 @@ PyObject* KX_PolyProxy::py_getattro(PyObject *attr)
py_getattro_up(SCA_IObject);
}
PyObject* KX_PolyProxy::py_getattro_dict() {
py_getattro_dict_up(SCA_IObject);
}
KX_PolyProxy::KX_PolyProxy(const RAS_MeshObject*mesh, RAS_Polygon* polygon)
: m_polygon(polygon),
m_mesh((RAS_MeshObject*)mesh)

@ -54,6 +54,7 @@ public:
// stuff for python integration
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
KX_PYMETHOD_DOC_NOARGS(KX_PolyProxy,getMaterialIndex)
KX_PYMETHOD_DOC_NOARGS(KX_PolyProxy,getNumVertex)

@ -237,6 +237,10 @@ PyObject* KX_PolygonMaterial::py_getattro(PyObject *attr)
py_getattro_up(PyObjectPlus);
}
PyObject* KX_PolygonMaterial::py_getattro_dict() {
py_getattro_dict_up(PyObjectPlus);
}
int KX_PolygonMaterial::py_setattro(PyObject *attr, PyObject *value)
{
py_setattro_up(PyObjectPlus);

@ -117,6 +117,7 @@ public:
KX_PYMETHOD_DOC(KX_PolygonMaterial, loadProgram);
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
virtual PyObject* py_repr(void) { return PyString_FromString(m_material ? ((ID *)m_material)->name+2 : ""); }

@ -304,6 +304,10 @@ PyObject* KX_RadarSensor::py_getattro(PyObject *attr)
py_getattro_up(KX_NearSensor);
}
PyObject* KX_RadarSensor::py_getattro_dict() {
py_getattro_dict_up(KX_NearSensor);
}
int KX_RadarSensor::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(KX_NearSensor);

@ -90,6 +90,7 @@ public:
};
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
//Deprecated ----->

@ -449,6 +449,10 @@ PyObject* KX_RaySensor::py_getattro(PyObject *attr) {
py_getattro_up(SCA_ISensor);
}
PyObject* KX_RaySensor::py_getattro_dict() {
py_getattro_dict_up(SCA_ISensor);
}
int KX_RaySensor::py_setattro(PyObject *attr, PyObject *value) {
py_setattro_up(SCA_ISensor);
}

@ -87,6 +87,7 @@ public:
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject *value);
// Deprecated ----->

@ -260,6 +260,10 @@ PyObject* KX_SCA_AddObjectActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
PyObject* KX_SCA_AddObjectActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_SCA_AddObjectActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);

@ -111,6 +111,7 @@ public:
Update();
virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* py_getattro_dict();
virtual int py_setattro(PyObject *attr, PyObject* value);
SCA_IObject*

@ -97,6 +97,10 @@ PyObject* KX_SCA_DynamicActuator::py_getattro(PyObject *attr)
py_getattro_up(SCA_IActuator);
}
PyObject* KX_SCA_DynamicActuator::py_getattro_dict() {
py_getattro_dict_up(SCA_IActuator);
}
int KX_SCA_DynamicActuator::py_setattro(PyObject *attr, PyObject* value)
{
py_setattro_up(SCA_IActuator);

Some files were not shown because too many files have changed in this diff Show More