Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/python/intern/bpy_rna.c2
-rw-r--r--source/blender/windowmanager/WM_api.h2
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c2
-rw-r--r--source/gameengine/Converter/BL_ActionActuator.cpp10
-rw-r--r--source/gameengine/Converter/BL_ShapeActionActuator.cpp9
-rw-r--r--source/gameengine/Expressions/BoolValue.cpp1
-rw-r--r--source/gameengine/Expressions/ListValue.cpp10
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.cpp111
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.h4
-rw-r--r--source/gameengine/Expressions/Value.cpp21
-rw-r--r--source/gameengine/GameLogic/SCA_2DFilterActuator.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_ANDController.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_ActuatorSensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_AlwaysSensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_DelaySensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_IController.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_ILogicBrick.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_IObject.cpp54
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickSensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_KeyboardSensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_LogicManager.cpp1
-rw-r--r--source/gameengine/GameLogic/SCA_MouseSensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_NANDController.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_NORController.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_ORController.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_PropertyActuator.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_PropertySensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_PythonController.cpp11
-rw-r--r--source/gameengine/GameLogic/SCA_RandomActuator.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_RandomSensor.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_XNORController.cpp9
-rw-r--r--source/gameengine/GameLogic/SCA_XORController.cpp9
-rw-r--r--source/gameengine/Ketsji/BL_Shader.cpp9
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_CDActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_Camera.cpp8
-rw-r--r--source/gameengine/Ketsji/KX_CameraActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintWrapper.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_GameActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.cpp10
-rw-r--r--source/gameengine/Ketsji/KX_IpoActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_Light.cpp8
-rw-r--r--source/gameengine/Ketsji/KX_MeshProxy.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_NearSensor.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_ObjectActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_ParentActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_PolyProxy.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_PolygonMaterial.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_PyMath.h2
-rw-r--r--source/gameengine/Ketsji/KX_PythonInitTypes.cpp49
-rw-r--r--source/gameengine/Ketsji/KX_RadarSensor.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_RaySensor.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_Scene.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_SceneActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_SoundActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_StateActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_TouchSensor.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_TrackToActuator.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_VehicleWrapper.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_VertexProxy.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_VisibilityActuator.cpp9
71 files changed, 358 insertions, 434 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 558722cc5e6..f07c85f7083 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -204,13 +204,13 @@ static long pyrna_struct_hash( BPy_StructRNA * self )
/* use our own dealloc so we can free a property if we use one */
static void pyrna_struct_dealloc( BPy_StructRNA * self )
{
- /* Note!! for some weired reason calling PyObject_DEL() directly crashes blender! */
if (self->freeptr && self->ptr.data) {
IDP_FreeProperty(self->ptr.data);
MEM_freeN(self->ptr.data);
self->ptr.data= NULL;
}
+ /* Note, for subclassed PyObjects we cant just call PyObject_DEL() directly or it will crash */
Py_TYPE(self)->tp_free(self);
return;
}
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 92b71e9fff0..ffeb342df77 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -79,7 +79,7 @@ void WM_keymap_tweak (ListBase *lb, short type, short val, int modifier, short
ListBase *WM_keymap_listbase (struct wmWindowManager *wm, const char *nameid,
int spaceid, int regionid);
-char *WM_key_event_string(short type);
+const char *WM_key_event_string(short type);
char *WM_key_event_operator_string(const struct bContext *C, const char *opname, int opcontext, struct IDProperty *properties, char *str, int len);
/* handlers */
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index 85028e3ea1a..b914e63788d 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -154,7 +154,7 @@ ListBase *WM_keymap_listbase(wmWindowManager *wm, const char *nameid, int spacei
/* ***************** get string from key events **************** */
-char *WM_key_event_string(short type)
+const char *WM_key_event_string(short type)
{
const char *name= NULL;
if(RNA_enum_name(event_type_items, (int)type, &name))
diff --git a/source/gameengine/Converter/BL_ActionActuator.cpp b/source/gameengine/Converter/BL_ActionActuator.cpp
index d9e65c53fac..bed99a4f502 100644
--- a/source/gameengine/Converter/BL_ActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ActionActuator.cpp
@@ -1005,19 +1005,17 @@ PyTypeObject BL_ActionActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
-
PyMethodDef BL_ActionActuator::Methods[] = {
//Deprecated ----->
{"setAction", (PyCFunction) BL_ActionActuator::sPySetAction, METH_VARARGS, (PY_METHODCHAR)SetAction_doc},
diff --git a/source/gameengine/Converter/BL_ShapeActionActuator.cpp b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
index 4c9a584d72b..970539777f4 100644
--- a/source/gameengine/Converter/BL_ShapeActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
@@ -427,16 +427,15 @@ PyTypeObject BL_ShapeActionActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
diff --git a/source/gameengine/Expressions/BoolValue.cpp b/source/gameengine/Expressions/BoolValue.cpp
index 1102b12fdc4..6779c2ea780 100644
--- a/source/gameengine/Expressions/BoolValue.cpp
+++ b/source/gameengine/Expressions/BoolValue.cpp
@@ -29,7 +29,6 @@
const STR_String CBoolValue::sTrueString = "TRUE";
const STR_String CBoolValue::sFalseString = "FALSE";
-
CBoolValue::CBoolValue()
/*
pre: false
diff --git a/source/gameengine/Expressions/ListValue.cpp b/source/gameengine/Expressions/ListValue.cpp
index 34a357aa5f1..38b00dcc8fb 100644
--- a/source/gameengine/Expressions/ListValue.cpp
+++ b/source/gameengine/Expressions/ListValue.cpp
@@ -225,7 +225,7 @@ static int listvalue_buffer_contains(PyObject *self_v, PyObject *value)
return 1;
}
}
- else if (BGE_PROXY_CHECK_TYPE(value)) { /* not dict like at all but this worked before __contains__ was used */
+ else if (PyObject_TypeCheck(value, &CValue::Type)) { /* not dict like at all but this worked before __contains__ was used */
CValue *item= static_cast<CValue *>(BGE_PROXY_REF(value));
for (int i=0; i < self->GetCount(); i++)
if (self->GetValue(i) == item) // Com
@@ -289,15 +289,17 @@ PyTypeObject CListValue::Type = {
0, /*tp_hash*/
0, /*tp_call */
0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
+ NULL,
+ NULL,
0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &CValue::Type
+ &CValue::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef CListValue::Methods[] = {
diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp
index 863390f209d..475953749de 100644
--- a/source/gameengine/Expressions/PyObjectPlus.cpp
+++ b/source/gameengine/Expressions/PyObjectPlus.cpp
@@ -74,10 +74,7 @@ PyTypeObject PyObjectPlus::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
@@ -96,6 +93,88 @@ PyObjectPlus::~PyObjectPlus()
// assert(ob_refcnt==0);
}
+
+PyObject *PyObjectPlus::py_base_repr(PyObject *self) // This should be the entry in Type.
+{
+ PyObjectPlus *self_plus= BGE_PROXY_REF(self);
+ if(self_plus==NULL) {
+ PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
+ return self_plus->py_repr();
+}
+
+
+PyObject * PyObjectPlus::py_base_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ PyTypeObject *base_type;
+ PyObjectPlus_Proxy *base = NULL;
+
+ if (!PyArg_ParseTuple(args, "O:Base PyObjectPlus", &base))
+ return NULL;
+
+ /* the 'base' PyObject may be subclassed (multiple times even)
+ * we need to find the first C++ defined class to check 'type'
+ * is a subclass of the base arguments type.
+ *
+ * This way we can share one tp_new function for every PyObjectPlus
+ *
+ * eg.
+ *
+ * # CustomOb is called 'type' in this C code
+ * class CustomOb(GameTypes.KX_GameObject):
+ * pass
+ *
+ * # this calls py_base_new(...), the type of 'CustomOb' is checked to be a subclass of the 'cont.owner' type
+ * ob = CustomOb(cont.owner)
+ *
+ * */
+ base_type= Py_TYPE(base);
+ while(base_type && !BGE_PROXY_CHECK_TYPE(base_type))
+ base_type= base_type->tp_base;
+
+ if(base_type==NULL || !BGE_PROXY_CHECK_TYPE(base_type)) {
+ PyErr_SetString(PyExc_TypeError, "can't subclass from a blender game type because the argument given is not a game class or subclass");
+ return NULL;
+ }
+
+ /* use base_type rather then Py_TYPE(base) because we could alredy be subtyped */
+ if(!PyType_IsSubtype(type, base_type)) {
+ PyErr_Format(PyExc_TypeError, "can't subclass blender game type <%s> from <%s> because it is not a subclass", base_type->tp_name, type->tp_name);
+ return NULL;
+ }
+
+ /* invalidate the existing base and return a new subclassed one,
+ * this is a bit dodgy in that it also attaches its self to the existing object
+ * which is not really 'correct' python OO but for our use its OK. */
+
+ PyObjectPlus_Proxy *ret = (PyObjectPlus_Proxy *) type->tp_alloc(type, 0); /* starts with 1 ref, used for the return ref' */
+ ret->ref= base->ref;
+ base->ref= NULL; /* invalidate! disallow further access */
+
+ ret->py_owns= base->py_owns;
+
+ ret->ref->m_proxy= NULL;
+
+ /* 'base' may be free'd after this func finished but not necessarily
+ * there is no reference to the BGE data now so it will throw an error on access */
+ Py_DECREF(base);
+
+ ret->ref->m_proxy= (PyObject *)ret; /* no need to add a ref because one is added when creating. */
+ Py_INCREF(ret); /* we return a new ref but m_proxy holds a ref so we need to add one */
+
+
+ /* 'ret' will have 2 references.
+ * - One ref is needed because ret->ref->m_proxy holds a refcount to the current proxy.
+ * - Another is needed for returning the value.
+ *
+ * So we should be ok with 2 refs, but for some reason this crashes. so adding a new ref...
+ * */
+
+ return (PyObject *)ret;
+}
+
void PyObjectPlus::py_base_dealloc(PyObject *self) // python wrapper
{
PyObjectPlus *self_plus= BGE_PROXY_REF(self);
@@ -104,17 +183,23 @@ void PyObjectPlus::py_base_dealloc(PyObject *self) // python wrapper
self_plus->m_proxy = NULL; /* Need this to stop ~PyObjectPlus from decrefing m_proxy otherwise its decref'd twice and py-debug crashes */
delete self_plus;
}
-
+
BGE_PROXY_REF(self)= NULL; // not really needed
}
+
+#if 0
+ /* is ok normally but not for subtyping, use tp_free instead. */
PyObject_DEL( self );
+#else
+ Py_TYPE(self)->tp_free(self);
+#endif
};
PyObjectPlus::PyObjectPlus() : SG_QList() // constructor
{
m_proxy= NULL;
};
-
+
/*------------------------------
* PyObjectPlus Methods -- Every class, even the abstract one should have a Methods
------------------------------*/
@@ -131,20 +216,8 @@ PyAttributeDef PyObjectPlus::Attributes[] = {
PyObject* PyObjectPlus::pyattr_get_invalid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
-{
- return PyBool_FromLong(self_v ? 1:0);
-}
-
-PyObject *PyObjectPlus::py_base_repr(PyObject *self) // This should be the entry in Type.
{
-
- PyObjectPlus *self_plus= BGE_PROXY_REF(self);
- if(self_plus==NULL) {
- PyErr_SetString(PyExc_SystemError, BGE_PROXY_ERROR_MSG);
- return NULL;
- }
-
- return self_plus->py_repr();
+ return PyBool_FromLong(self_v ? 1:0);
}
/* note, this is called as a python 'getset, where the PyAttributeDef is the closure */
diff --git a/source/gameengine/Expressions/PyObjectPlus.h b/source/gameengine/Expressions/PyObjectPlus.h
index ee69e7d3b07..a18df9d36a9 100644
--- a/source/gameengine/Expressions/PyObjectPlus.h
+++ b/source/gameengine/Expressions/PyObjectPlus.h
@@ -135,7 +135,7 @@ typedef struct {
#define BGE_PROXY_PYOWNS(_self) (((PyObjectPlus_Proxy *)_self)->py_owns)
/* Note, sometimes we dont care what BGE type this is as long as its a proxy */
-#define BGE_PROXY_CHECK_TYPE(_self) ((_self)->ob_type->tp_dealloc == PyObjectPlus::py_base_dealloc)
+#define BGE_PROXY_CHECK_TYPE(_type) ((_type)->tp_dealloc == PyObjectPlus::py_base_dealloc)
// This must be the first line of each
@@ -439,6 +439,8 @@ public:
* they take the C++ reference from the PyObjectPlus_Proxy and call
* its own virtual py_repr, py_base_dealloc ,etc. functions.
*/
+
+ static PyObject* py_base_new(PyTypeObject *type, PyObject *args, PyObject *kwds); /* allows subclassing */
static void py_base_dealloc(PyObject *self);
static PyObject* py_base_repr(PyObject *self);
diff --git a/source/gameengine/Expressions/Value.cpp b/source/gameengine/Expressions/Value.cpp
index a9b44495495..d8c81f56f66 100644
--- a/source/gameengine/Expressions/Value.cpp
+++ b/source/gameengine/Expressions/Value.cpp
@@ -54,15 +54,17 @@ PyTypeObject CValue::Type = {
py_base_repr,
0,
0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
+ NULL,
+ NULL,
0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &PyObjectPlus::Type
+ &PyObjectPlus::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef CValue::Methods[] = {
@@ -613,18 +615,9 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj, const char *error_prefix)
{
vallie = new CStringValue(_PyUnicode_AsString(pyobj),"");
} else
- if (BGE_PROXY_CHECK_TYPE(pyobj)) /* Note, dont let these get assigned to GameObject props, must check elsewhere */
+ if (PyObject_TypeCheck(pyobj, &CValue::Type)) /* Note, dont let these get assigned to GameObject props, must check elsewhere */
{
- if (BGE_PROXY_REF(pyobj) && PyObject_TypeCheck((PyObject *)BGE_PROXY_REF(pyobj), &CValue::Type))
- {
- vallie = (static_cast<CValue *>(BGE_PROXY_REF(pyobj)))->AddRef();
- } else {
-
- if(BGE_PROXY_REF(pyobj)) /* this is not a CValue */
- PyErr_Format(PyExc_TypeError, "%sgame engine python type cannot be used as a property", error_prefix);
- else /* PyObjectPlus_Proxy has been removed, cant use */
- PyErr_Format(PyExc_SystemError, "%s"BGE_PROXY_ERROR_MSG, error_prefix);
- }
+ vallie = (static_cast<CValue *>(BGE_PROXY_REF(pyobj)))->AddRef();
} else
{
/* return an error value from the caller */
diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
index 8e54043a1a2..04d46e259d3 100644
--- a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
@@ -123,16 +123,15 @@ PyTypeObject SCA_2DFilterActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_2DFilterActuator::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_ANDController.cpp b/source/gameengine/GameLogic/SCA_ANDController.cpp
index fc2f9cdf27d..78e1350428e 100644
--- a/source/gameengine/GameLogic/SCA_ANDController.cpp
+++ b/source/gameengine/GameLogic/SCA_ANDController.cpp
@@ -115,16 +115,15 @@ PyTypeObject SCA_ANDController::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IController::Type
+ &SCA_IController::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_ANDController::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp b/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
index 9d2642ba01a..bdcc923e1d9 100644
--- a/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
@@ -137,16 +137,15 @@ PyTypeObject SCA_ActuatorSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_ActuatorSensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp b/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
index a14db7debd9..ddb54c580b8 100644
--- a/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
@@ -120,16 +120,15 @@ PyTypeObject SCA_AlwaysSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_AlwaysSensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_DelaySensor.cpp b/source/gameengine/GameLogic/SCA_DelaySensor.cpp
index db6a6af7928..11c6996a0a1 100644
--- a/source/gameengine/GameLogic/SCA_DelaySensor.cpp
+++ b/source/gameengine/GameLogic/SCA_DelaySensor.cpp
@@ -146,16 +146,15 @@ PyTypeObject SCA_DelaySensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_DelaySensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_IController.cpp b/source/gameengine/GameLogic/SCA_IController.cpp
index 4b7c462b6f7..7cbb728753a 100644
--- a/source/gameengine/GameLogic/SCA_IController.cpp
+++ b/source/gameengine/GameLogic/SCA_IController.cpp
@@ -215,16 +215,15 @@ PyTypeObject SCA_IController::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ILogicBrick::Type
+ &SCA_ILogicBrick::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_IController::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
index 9d0b9b30ff6..ccb79a2d49f 100644
--- a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
+++ b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
@@ -193,16 +193,15 @@ PyTypeObject SCA_ILogicBrick::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &CValue::Type
+ &CValue::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_ILogicBrick::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_IObject.cpp b/source/gameengine/GameLogic/SCA_IObject.cpp
index 698e845466a..6cd11f9e553 100644
--- a/source/gameengine/GameLogic/SCA_IObject.cpp
+++ b/source/gameengine/GameLogic/SCA_IObject.cpp
@@ -221,51 +221,6 @@ SCA_IActuator* SCA_IObject::FindActuator(const STR_String& actuatorname)
}
-
-#if 0
-const MT_Point3& SCA_IObject::ConvertPythonPylist(PyObject* pylist)
-{
- bool error = false;
- m_sDummy = MT_Vector3(0,0,0);
- if (pylist->ob_type == &CListValue::Type)
- {
- CListValue* listval = (CListValue*) pylist;
- int numelem = listval->GetCount();
- if ( numelem <= 3)
- {
- int index;
- for (index = 0;index<numelem;index++)
- {
- m_sDummy[index] = listval->GetValue(index)->GetNumber();
- }
- } else
- {
- error = true;
- }
-
- } else
- {
-
- // assert the list is long enough...
- int numitems = PyList_Size(pylist);
- if (numitems <= 3)
- {
- int index;
- for (index=0;index<numitems;index++)
- {
- m_sDummy[index] = PyFloat_AsDouble(PyList_GetItem(pylist,index));
- }
- }
- else
- {
- error = true;
- }
-
- }
- return m_sDummy;
-}
-#endif
-
void SCA_IObject::Suspend()
{
if ((!m_ignore_activity_culling)
@@ -349,16 +304,15 @@ PyTypeObject SCA_IObject::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &CValue::Type
+ &CValue::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_IObject::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_ISensor.cpp b/source/gameengine/GameLogic/SCA_ISensor.cpp
index d68afebbc20..4c1e0bd01c4 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.cpp
+++ b/source/gameengine/GameLogic/SCA_ISensor.cpp
@@ -488,16 +488,15 @@ PyTypeObject SCA_ISensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ILogicBrick::Type
+ &SCA_ILogicBrick::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_ISensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_JoystickSensor.cpp b/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
index f91ccff799c..f55921e648b 100644
--- a/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
@@ -268,16 +268,15 @@ PyTypeObject SCA_JoystickSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_JoystickSensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
index cbf25f10291..999e34dfa36 100644
--- a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
@@ -630,16 +630,15 @@ PyTypeObject SCA_KeyboardSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_KeyboardSensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_LogicManager.cpp b/source/gameengine/GameLogic/SCA_LogicManager.cpp
index 83271288154..b782c6dfb93 100644
--- a/source/gameengine/GameLogic/SCA_LogicManager.cpp
+++ b/source/gameengine/GameLogic/SCA_LogicManager.cpp
@@ -307,6 +307,7 @@ void SCA_LogicManager::AddTriggeredController(SCA_IController* controller, SCA_I
controller->Activate(m_triggeredControllerSet);
// so that the controller knows which sensor has activited it
// only needed for python controller
+ // Note that this is safe even if the controller is subclassed.
if (controller->GetType() == &SCA_PythonController::Type)
{
SCA_PythonController* pythonController = (SCA_PythonController*)controller;
diff --git a/source/gameengine/GameLogic/SCA_MouseSensor.cpp b/source/gameengine/GameLogic/SCA_MouseSensor.cpp
index 608aa043461..49fa19dce38 100644
--- a/source/gameengine/GameLogic/SCA_MouseSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_MouseSensor.cpp
@@ -311,16 +311,15 @@ PyTypeObject SCA_MouseSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_MouseSensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_NANDController.cpp b/source/gameengine/GameLogic/SCA_NANDController.cpp
index d4a6a444b97..c00e5d6e617 100644
--- a/source/gameengine/GameLogic/SCA_NANDController.cpp
+++ b/source/gameengine/GameLogic/SCA_NANDController.cpp
@@ -115,16 +115,15 @@ PyTypeObject SCA_NANDController::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IController::Type
+ &SCA_IController::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_NANDController::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_NORController.cpp b/source/gameengine/GameLogic/SCA_NORController.cpp
index 67e0916ecc1..9762d44fd5d 100644
--- a/source/gameengine/GameLogic/SCA_NORController.cpp
+++ b/source/gameengine/GameLogic/SCA_NORController.cpp
@@ -115,16 +115,15 @@ PyTypeObject SCA_NORController::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IController::Type
+ &SCA_IController::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_NORController::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_ORController.cpp b/source/gameengine/GameLogic/SCA_ORController.cpp
index 1dd81668482..a526dd8353c 100644
--- a/source/gameengine/GameLogic/SCA_ORController.cpp
+++ b/source/gameengine/GameLogic/SCA_ORController.cpp
@@ -109,16 +109,15 @@ PyTypeObject SCA_ORController::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IController::Type
+ &SCA_IController::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_ORController::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
index f3c0a76a9f2..215e30eceaf 100644
--- a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
@@ -244,16 +244,15 @@ PyTypeObject SCA_PropertyActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_PropertyActuator::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_PropertySensor.cpp b/source/gameengine/GameLogic/SCA_PropertySensor.cpp
index ea928bb1c8f..6d2e1a0aca5 100644
--- a/source/gameengine/GameLogic/SCA_PropertySensor.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertySensor.cpp
@@ -318,16 +318,15 @@ PyTypeObject SCA_PropertySensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_PropertySensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp
index 7eecb6ccc98..ffd95f00699 100644
--- a/source/gameengine/GameLogic/SCA_PythonController.cpp
+++ b/source/gameengine/GameLogic/SCA_PythonController.cpp
@@ -187,7 +187,7 @@ SCA_IActuator* SCA_PythonController::LinkedActuatorFromPy(PyObject *value)
}
}
}
- else if (BGE_PROXY_CHECK_TYPE(value)) {
+ else if (PyObject_TypeCheck(value, &SCA_IActuator::Type)) {
PyObjectPlus *value_plus= BGE_PROXY_REF(value);
for(it = lacts.begin(); it!= lacts.end(); ++it) {
if( static_cast<SCA_IActuator*>(value_plus) == (*it) ) {
@@ -243,16 +243,15 @@ PyTypeObject SCA_PythonController::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IController::Type
+ &SCA_IController::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_PythonController::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.cpp b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
index 0474cb4ab5f..e903d10f9a5 100644
--- a/source/gameengine/GameLogic/SCA_RandomActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
@@ -331,16 +331,15 @@ PyTypeObject SCA_RandomActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_RandomActuator::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_RandomSensor.cpp b/source/gameengine/GameLogic/SCA_RandomSensor.cpp
index 9d3501ab4ed..e036a77707e 100644
--- a/source/gameengine/GameLogic/SCA_RandomSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomSensor.cpp
@@ -146,16 +146,15 @@ PyTypeObject SCA_RandomSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_RandomSensor::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_XNORController.cpp b/source/gameengine/GameLogic/SCA_XNORController.cpp
index 584a6b18f58..527adc70cc6 100644
--- a/source/gameengine/GameLogic/SCA_XNORController.cpp
+++ b/source/gameengine/GameLogic/SCA_XNORController.cpp
@@ -119,16 +119,15 @@ PyTypeObject SCA_XNORController::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IController::Type
+ &SCA_IController::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_XNORController::Methods[] = {
diff --git a/source/gameengine/GameLogic/SCA_XORController.cpp b/source/gameengine/GameLogic/SCA_XORController.cpp
index 9f570acb009..c0916224fe6 100644
--- a/source/gameengine/GameLogic/SCA_XORController.cpp
+++ b/source/gameengine/GameLogic/SCA_XORController.cpp
@@ -119,16 +119,15 @@ PyTypeObject SCA_XORController::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IController::Type
+ &SCA_IController::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef SCA_XORController::Methods[] = {
diff --git a/source/gameengine/Ketsji/BL_Shader.cpp b/source/gameengine/Ketsji/BL_Shader.cpp
index b6debb4c62c..8bde5dd3a51 100644
--- a/source/gameengine/Ketsji/BL_Shader.cpp
+++ b/source/gameengine/Ketsji/BL_Shader.cpp
@@ -781,16 +781,15 @@ PyTypeObject BL_Shader::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &PyObjectPlus::Type
+ &PyObjectPlus::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
KX_PYMETHODDEF_DOC( BL_Shader, setSource," setSource(vertexProgram, fragmentProgram)" )
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
index 60805916a20..7cb287d02b2 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
@@ -117,16 +117,15 @@ PyTypeObject KX_NetworkMessageActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_NetworkMessageActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
index bfc49040794..78dda1f6db7 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
@@ -181,16 +181,15 @@ PyTypeObject KX_NetworkMessageSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_NetworkMessageSensor::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index ea819cea5f2..314becc702d 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -811,16 +811,15 @@ PyTypeObject KX_BlenderMaterial::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &PyObjectPlus::Type
+ &PyObjectPlus::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getShader , "getShader()")
diff --git a/source/gameengine/Ketsji/KX_CDActuator.cpp b/source/gameengine/Ketsji/KX_CDActuator.cpp
index d025dbfa469..bfca81f45d9 100644
--- a/source/gameengine/Ketsji/KX_CDActuator.cpp
+++ b/source/gameengine/Ketsji/KX_CDActuator.cpp
@@ -170,16 +170,15 @@ PyTypeObject KX_CDActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_CDActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp
index 85fa579167b..f762699f780 100644
--- a/source/gameengine/Ketsji/KX_Camera.cpp
+++ b/source/gameengine/Ketsji/KX_Camera.cpp
@@ -550,15 +550,17 @@ PyTypeObject KX_Camera::Type = {
&KX_GameObject::Sequence,
&KX_GameObject::Mapping,
0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
+ NULL,
+ NULL,
0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &KX_GameObject::Type
+ &KX_GameObject::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, sphereInsideFrustum,
diff --git a/source/gameengine/Ketsji/KX_CameraActuator.cpp b/source/gameengine/Ketsji/KX_CameraActuator.cpp
index e2c3ecb1b3e..3d3b68ed85d 100644
--- a/source/gameengine/Ketsji/KX_CameraActuator.cpp
+++ b/source/gameengine/Ketsji/KX_CameraActuator.cpp
@@ -384,16 +384,15 @@ PyTypeObject KX_CameraActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_CameraActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_ConstraintActuator.cpp b/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
index 8470c2c1f5f..d09eae647c8 100644
--- a/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
@@ -580,16 +580,15 @@ PyTypeObject KX_ConstraintActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_ConstraintActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp b/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
index 955dd18d43e..ec7bb470235 100644
--- a/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
@@ -99,16 +99,15 @@ PyTypeObject KX_ConstraintWrapper::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &PyObjectPlus::Type
+ &PyObjectPlus::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_ConstraintWrapper::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_GameActuator.cpp b/source/gameengine/Ketsji/KX_GameActuator.cpp
index 029f1f07861..560c7fa4bb4 100644
--- a/source/gameengine/Ketsji/KX_GameActuator.cpp
+++ b/source/gameengine/Ketsji/KX_GameActuator.cpp
@@ -223,16 +223,15 @@ PyTypeObject KX_GameActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_GameActuator::Methods[] =
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index 5798830e243..bf80eec36d9 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -1562,7 +1562,7 @@ static int Map_SetItem(PyObject *self_v, PyObject *key, PyObject *val)
int set= 0;
/* as CValue */
- if(attr_str && BGE_PROXY_CHECK_TYPE(val)==0) /* dont allow GameObjects for eg to be assigned to CValue props */
+ if(attr_str && PyObject_TypeCheck(val, &PyObjectPlus::Type)==0) /* dont allow GameObjects for eg to be assigned to CValue props */
{
CValue* vallie = self->ConvertPythonToValue(val, ""); /* error unused */
@@ -1672,15 +1672,17 @@ PyTypeObject KX_GameObject::Type = {
&Sequence,
&Mapping,
0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
+ NULL,
+ NULL,
0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IObject::Type
+ &SCA_IObject::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyObject* KX_GameObject::pyattr_get_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
diff --git a/source/gameengine/Ketsji/KX_IpoActuator.cpp b/source/gameengine/Ketsji/KX_IpoActuator.cpp
index 0edb6747f2f..73a370a1681 100644
--- a/source/gameengine/Ketsji/KX_IpoActuator.cpp
+++ b/source/gameengine/Ketsji/KX_IpoActuator.cpp
@@ -428,16 +428,15 @@ PyTypeObject KX_IpoActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_IpoActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_Light.cpp b/source/gameengine/Ketsji/KX_Light.cpp
index 08542ec1602..fb385f8a9a2 100644
--- a/source/gameengine/Ketsji/KX_Light.cpp
+++ b/source/gameengine/Ketsji/KX_Light.cpp
@@ -289,15 +289,17 @@ PyTypeObject KX_LightObject::Type = {
&KX_GameObject::Sequence,
&KX_GameObject::Mapping,
0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
+ NULL,
+ NULL,
0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &KX_GameObject::Type
+ &KX_GameObject::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_LightObject::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_MeshProxy.cpp b/source/gameengine/Ketsji/KX_MeshProxy.cpp
index 2c0c31c96c4..96e8f61e4c8 100644
--- a/source/gameengine/Ketsji/KX_MeshProxy.cpp
+++ b/source/gameengine/Ketsji/KX_MeshProxy.cpp
@@ -62,16 +62,15 @@ PyTypeObject KX_MeshProxy::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &CValue::Type
+ &CValue::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_MeshProxy::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
index e38ec702acd..ba4b47cb03f 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
@@ -355,16 +355,15 @@ PyTypeObject KX_MouseFocusSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_MouseSensor::Type
+ &SCA_MouseSensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_MouseFocusSensor::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_NearSensor.cpp b/source/gameengine/Ketsji/KX_NearSensor.cpp
index 64f6b9306a0..1a211a64b35 100644
--- a/source/gameengine/Ketsji/KX_NearSensor.cpp
+++ b/source/gameengine/Ketsji/KX_NearSensor.cpp
@@ -270,16 +270,15 @@ PyTypeObject KX_NearSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &KX_TouchSensor::Type
+ &KX_TouchSensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_NearSensor::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_ObjectActuator.cpp b/source/gameengine/Ketsji/KX_ObjectActuator.cpp
index b13c225a16f..ae340d12be4 100644
--- a/source/gameengine/Ketsji/KX_ObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ObjectActuator.cpp
@@ -341,16 +341,15 @@ PyTypeObject KX_ObjectActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_ObjectActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_ParentActuator.cpp b/source/gameengine/Ketsji/KX_ParentActuator.cpp
index fb2fd614062..befa2aaff56 100644
--- a/source/gameengine/Ketsji/KX_ParentActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ParentActuator.cpp
@@ -156,16 +156,15 @@ PyTypeObject KX_ParentActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_ParentActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
index fb6bc8b898d..7bce311f1b6 100644
--- a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
@@ -129,16 +129,15 @@ PyTypeObject KX_PhysicsObjectWrapper::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &PyObjectPlus::Type
+ &PyObjectPlus::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_PhysicsObjectWrapper::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_PolyProxy.cpp b/source/gameengine/Ketsji/KX_PolyProxy.cpp
index 7fd667eeaf3..a1571b17756 100644
--- a/source/gameengine/Ketsji/KX_PolyProxy.cpp
+++ b/source/gameengine/Ketsji/KX_PolyProxy.cpp
@@ -55,16 +55,15 @@ PyTypeObject KX_PolyProxy::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &CValue::Type
+ &CValue::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_PolyProxy::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
index 4d5e7ca565b..9bc84127572 100644
--- a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
@@ -255,16 +255,15 @@ PyTypeObject KX_PolygonMaterial::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &PyObjectPlus::Type
+ &PyObjectPlus::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
KX_PYMETHODDEF_DOC(KX_PolygonMaterial, setCustomMaterial, "setCustomMaterial(material)")
diff --git a/source/gameengine/Ketsji/KX_PyMath.h b/source/gameengine/Ketsji/KX_PyMath.h
index 4fd16089ee2..9ee11c9e745 100644
--- a/source/gameengine/Ketsji/KX_PyMath.h
+++ b/source/gameengine/Ketsji/KX_PyMath.h
@@ -154,7 +154,7 @@ bool PyVecTo(PyObject* pyval, T& vec)
return true;
}
- else if (BGE_PROXY_CHECK_TYPE(pyval))
+ else if (PyObject_TypeCheck(pyval, &PyObjectPlus::Type))
{ /* note, include this check because PySequence_Check does too much introspection
* on the PyObject (like getting its __class__, on a BGE type this means searching up
* the parent list each time only to discover its not a sequence.
diff --git a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
index b7a573fd0d3..8ff0bfd5379 100644
--- a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
@@ -87,52 +87,6 @@
#include "SCA_RandomActuator.h"
#include "SCA_IController.h"
-
-void initPyObjectPlusType(PyTypeObject **parents)
-{
- int i;
-
- for (i=0; parents[i]; i++) {
- if(PyType_Ready(parents[i]) < 0) {
- /* This is very very unlikely */
- printf("Error, pytype could not initialize, Blender may crash \"%s\"\n", parents[i]->tp_name);
- return;
- }
-
-#if 0
- PyObject_Print(reinterpret_cast<PyObject *>parents[i], stderr, 0);
- fprintf(stderr, "\n");
- PyObject_Print(parents[i]->tp_dict, stderr, 0);
- fprintf(stderr, "\n\n");
-#endif
-
- }
-
- PyObject *dict= NULL;
-
- while(i) {
- i--;
-
- if (dict) {
- PyDict_Update(parents[i]->tp_dict, dict);
- }
- dict= parents[i]->tp_dict;
-
-#if 1
- PyObject_Print(reinterpret_cast<PyObject *>(parents[i]), stderr, 0);
- fprintf(stderr, "\n");
- PyObject_Print(parents[i]->tp_dict, stderr, 0);
- fprintf(stderr, "\n\n");
-#endif
-
- }
-}
-
-/*
-typedef PyObject *(*getter)(PyObject *, void *);
-typedef int (*setter)(PyObject *, PyObject *, void *);
-*/
-
static void PyType_Ready_ADD(PyObject *dict, PyTypeObject *tp, PyAttributeDef *attributes, int init_getset)
{
PyAttributeDef *attr;
@@ -169,9 +123,6 @@ static void PyType_Ready_ADD(PyObject *dict, PyTypeObject *tp, PyAttributeDef *a
memset(attr_getset, 0, sizeof(PyGetSetDef));
}
-
-
- return;
} else {
PyObject *item;
diff --git a/source/gameengine/Ketsji/KX_RadarSensor.cpp b/source/gameengine/Ketsji/KX_RadarSensor.cpp
index 3423fec99e0..e39d3756b71 100644
--- a/source/gameengine/Ketsji/KX_RadarSensor.cpp
+++ b/source/gameengine/Ketsji/KX_RadarSensor.cpp
@@ -244,16 +244,15 @@ PyTypeObject KX_RadarSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &KX_NearSensor::Type
+ &KX_NearSensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_RadarSensor::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_RaySensor.cpp b/source/gameengine/Ketsji/KX_RaySensor.cpp
index ebdef526eae..3f27496df71 100644
--- a/source/gameengine/Ketsji/KX_RaySensor.cpp
+++ b/source/gameengine/Ketsji/KX_RaySensor.cpp
@@ -335,16 +335,15 @@ PyTypeObject KX_RaySensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
diff --git a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
index 69214dbbbcf..239c4a0be67 100644
--- a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
@@ -186,16 +186,15 @@ PyTypeObject KX_SCA_AddObjectActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_SCA_AddObjectActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
index 3cff9457c34..423fd0db7f2 100644
--- a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
@@ -64,16 +64,15 @@ PyTypeObject KX_SCA_DynamicActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_SCA_DynamicActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
index bf1ada97b9e..47c5c3aeeeb 100644
--- a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
@@ -107,16 +107,15 @@ PyTypeObject KX_SCA_EndObjectActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_SCA_EndObjectActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
index ee50008edae..2884bb76565 100644
--- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
@@ -67,16 +67,15 @@ PyTypeObject KX_SCA_ReplaceMeshActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_SCA_ReplaceMeshActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index 5f3ed690adc..51f5276e075 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -1629,16 +1629,15 @@ PyTypeObject KX_Scene::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &CValue::Type
+ &CValue::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_Scene::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_SceneActuator.cpp b/source/gameengine/Ketsji/KX_SceneActuator.cpp
index 76869f82c1a..5528e58ef77 100644
--- a/source/gameengine/Ketsji/KX_SceneActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SceneActuator.cpp
@@ -238,16 +238,15 @@ PyTypeObject KX_SceneActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_SceneActuator::Methods[] =
diff --git a/source/gameengine/Ketsji/KX_SoundActuator.cpp b/source/gameengine/Ketsji/KX_SoundActuator.cpp
index 0ad699fd811..673f42283dd 100644
--- a/source/gameengine/Ketsji/KX_SoundActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SoundActuator.cpp
@@ -249,16 +249,15 @@ PyTypeObject KX_SoundActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_SoundActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_StateActuator.cpp b/source/gameengine/Ketsji/KX_StateActuator.cpp
index ad21258a3b6..9815d6274aa 100644
--- a/source/gameengine/Ketsji/KX_StateActuator.cpp
+++ b/source/gameengine/Ketsji/KX_StateActuator.cpp
@@ -153,16 +153,15 @@ PyTypeObject KX_StateActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_StateActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_TouchSensor.cpp b/source/gameengine/Ketsji/KX_TouchSensor.cpp
index 32c19df3542..b0cf172c27a 100644
--- a/source/gameengine/Ketsji/KX_TouchSensor.cpp
+++ b/source/gameengine/Ketsji/KX_TouchSensor.cpp
@@ -310,16 +310,15 @@ PyTypeObject KX_TouchSensor::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_ISensor::Type
+ &SCA_ISensor::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_TouchSensor::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_TrackToActuator.cpp b/source/gameengine/Ketsji/KX_TrackToActuator.cpp
index 49737a6dfc2..e8a06d8d619 100644
--- a/source/gameengine/Ketsji/KX_TrackToActuator.cpp
+++ b/source/gameengine/Ketsji/KX_TrackToActuator.cpp
@@ -447,16 +447,15 @@ PyTypeObject KX_TrackToActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_TrackToActuator::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_VehicleWrapper.cpp b/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
index 484c8f38b3f..7001bfc8b7e 100644
--- a/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
@@ -289,16 +289,15 @@ PyTypeObject KX_VehicleWrapper::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &PyObjectPlus::Type
+ &PyObjectPlus::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_VehicleWrapper::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_VertexProxy.cpp b/source/gameengine/Ketsji/KX_VertexProxy.cpp
index 34a84f908a8..cb8c891969d 100644
--- a/source/gameengine/Ketsji/KX_VertexProxy.cpp
+++ b/source/gameengine/Ketsji/KX_VertexProxy.cpp
@@ -53,16 +53,15 @@ PyTypeObject KX_VertexProxy::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &CValue::Type
+ &CValue::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_VertexProxy::Methods[] = {
diff --git a/source/gameengine/Ketsji/KX_VisibilityActuator.cpp b/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
index 260d764beec..3561ccde9d9 100644
--- a/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
+++ b/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
@@ -107,16 +107,15 @@ PyTypeObject KX_VisibilityActuator::Type = {
0,
0,
py_base_repr,
- 0,0,0,0,0,0,
- NULL, //py_base_getattro,
- NULL, //py_base_setattro,
- 0,
+ 0,0,0,0,0,0,0,0,0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
0,0,0,0,0,0,0,
Methods,
0,
0,
- &SCA_IActuator::Type
+ &SCA_IActuator::Type,
+ 0,0,0,0,0,0,
+ py_base_new
};
PyMethodDef KX_VisibilityActuator::Methods[] = {