Merge of itasc branch. Project files, scons and cmake should be working. Makefile...
[blender.git] / source / gameengine / Ketsji / KX_SCA_AddObjectActuator.cpp
index 75435b9..c1e7407 100644 (file)
@@ -55,10 +55,9 @@ KX_SCA_AddObjectActuator::KX_SCA_AddObjectActuator(SCA_IObject *gameobj,
                                                                                                   const float *linvel,
                                                                                                   bool linv_local,
                                                                                                   const float *angvel,
-                                                                                                  bool angv_local,
-                                                                                                  PyTypeObject* T)
+                                                                                                  bool angv_local)
        : 
-       SCA_IActuator(gameobj, T),
+       SCA_IActuator(gameobj, KX_ACT_ADD_OBJECT),
        m_OriginalObject(original),
        m_scene(scene),
        
@@ -171,13 +170,7 @@ void KX_SCA_AddObjectActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
 
 /* Integration hooks ------------------------------------------------------- */
 PyTypeObject KX_SCA_AddObjectActuator::Type = {
-#if (PY_VERSION_HEX >= 0x02060000)
        PyVarObject_HEAD_INIT(NULL, 0)
-#else
-       /* python 2.5 and below */
-       PyObject_HEAD_INIT( NULL )  /* required py macro */
-       0,                          /* ob_size */
-#endif
        "KX_SCA_AddObjectActuator",
        sizeof(PyObjectPlus_Proxy),
        0,
@@ -187,33 +180,19 @@ PyTypeObject KX_SCA_AddObjectActuator::Type = {
        0,
        0,
        py_base_repr,
-       0,0,0,0,0,0,
-       py_base_getattro,
-       py_base_setattro,
        0,0,0,0,0,0,0,0,0,
-       Methods
-};
-
-PyParentObject KX_SCA_AddObjectActuator::Parents[] = {
-       &KX_SCA_AddObjectActuator::Type,
+       Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
+       0,0,0,0,0,0,0,
+       Methods,
+       0,
+       0,
        &SCA_IActuator::Type,
-       &SCA_ILogicBrick::Type,
-       &CValue::Type,
-       NULL
+       0,0,0,0,0,0,
+       py_base_new
 };
+
 PyMethodDef KX_SCA_AddObjectActuator::Methods[] = {
-  // ---> deprecated
-  {"setTime", (PyCFunction) KX_SCA_AddObjectActuator::sPySetTime, METH_O, (PY_METHODCHAR)SetTime_doc},
-  {"getTime", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetTime, METH_NOARGS, (PY_METHODCHAR)GetTime_doc},
-  {"getLinearVelocity", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetLinearVelocity, METH_NOARGS, (PY_METHODCHAR)GetLinearVelocity_doc},
-  {"setLinearVelocity", (PyCFunction) KX_SCA_AddObjectActuator::sPySetLinearVelocity, METH_VARARGS, (PY_METHODCHAR)SetLinearVelocity_doc},
-  {"getAngularVelocity", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetAngularVelocity, METH_NOARGS, (PY_METHODCHAR)GetAngularVelocity_doc},
-  {"setAngularVelocity", (PyCFunction) KX_SCA_AddObjectActuator::sPySetAngularVelocity, METH_VARARGS, (PY_METHODCHAR)SetAngularVelocity_doc},
-  {"getLastCreatedObject", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetLastCreatedObject, METH_NOARGS,"getLastCreatedObject() : get the object handle to the last created object\n"},
   {"instantAddObject", (PyCFunction) KX_SCA_AddObjectActuator::sPyInstantAddObject, METH_NOARGS,"instantAddObject() : immediately add object without delay\n"},
-  {"setObject", (PyCFunction) KX_SCA_AddObjectActuator::sPySetObject, METH_O, (PY_METHODCHAR)SetObject_doc},
-  {"getObject", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetObject, METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
-  
   {NULL,NULL} //Sentinel
 };
 
@@ -264,196 +243,6 @@ PyObject* KX_SCA_AddObjectActuator::pyattr_get_objectLastCreated(void *self, con
 }
 
 
-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);
-}
-
-/* 1. setObject */
-const char KX_SCA_AddObjectActuator::SetObject_doc[] = 
-"setObject(object)\n"
-"\t- object: KX_GameObject, string or None\n"
-"\tSets the object that will be added. There has to be an object\n"
-"\tof this name. If not, this function does nothing.\n";
-PyObject* KX_SCA_AddObjectActuator::PySetObject(PyObject* value)
-{
-       KX_GameObject *gameobj;
-       
-       ShowDeprecationWarning("setObject()", "the object property");
-       
-       if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.setObject(value): KX_SCA_AddObjectActuator"))
-               return NULL; // ConvertPythonToGameObject sets the error
-       
-       if (m_OriginalObject != NULL)
-               m_OriginalObject->UnregisterActuator(this);     
-
-       m_OriginalObject = (SCA_IObject*)gameobj;
-       if (m_OriginalObject)
-               m_OriginalObject->RegisterActuator(this);
-       
-       Py_RETURN_NONE;
-}
-
-
-
-/* 2. setTime */
-const char KX_SCA_AddObjectActuator::SetTime_doc[] = 
-"setTime(duration)\n"
-"\t- duration: integer\n"
-"\tSets the lifetime of the object that will be added, in frames. \n"
-"\tIf the duration is negative, it is set to 0.\n";
-
-
-PyObject* KX_SCA_AddObjectActuator::PySetTime(PyObject* value)
-{
-       ShowDeprecationWarning("setTime()", "the time property");
-       int deltatime = PyInt_AsLong(value);
-       if (deltatime==-1 && PyErr_Occurred()) {
-               PyErr_SetString(PyExc_TypeError, "expected an int");
-               return NULL;
-       }
-       
-       m_timeProp = deltatime;
-       if (m_timeProp < 0) m_timeProp = 0;
-       
-       Py_RETURN_NONE;
-}
-
-
-
-/* 3. getTime */
-const char KX_SCA_AddObjectActuator::GetTime_doc[] = 
-"getTime()\n"
-"\tReturns the lifetime of the object that will be added.\n";
-
-
-PyObject* KX_SCA_AddObjectActuator::PyGetTime()
-{
-       ShowDeprecationWarning("getTime()", "the time property");
-       return PyInt_FromLong(m_timeProp);
-}
-
-
-/* 4. getObject */
-const char KX_SCA_AddObjectActuator::GetObject_doc[] = 
-"getObject(name_only = 1)\n"
-"name_only - optional arg, when true will return the KX_GameObject rather then its name\n"
-"\tReturns the name of the object that will be added.\n";
-PyObject* KX_SCA_AddObjectActuator::PyGetObject(PyObject* args)
-{
-       int ret_name_only = 1;
-       
-       ShowDeprecationWarning("getObject()", "the object property");
-       
-       if (!PyArg_ParseTuple(args, "|i:getObject", &ret_name_only))
-               return NULL;
-       
-       if (!m_OriginalObject)
-               Py_RETURN_NONE;
-       
-       if (ret_name_only)
-               return PyString_FromString(m_OriginalObject->GetName().ReadPtr());
-       else
-               return m_OriginalObject->GetProxy();
-}
-
-
-
-/* 5. getLinearVelocity */
-const char KX_SCA_AddObjectActuator::GetLinearVelocity_doc[] = 
-"GetLinearVelocity()\n"
-"\tReturns the linear velocity that will be assigned to \n"
-"\tthe created object.\n";
-
-PyObject* KX_SCA_AddObjectActuator::PyGetLinearVelocity()
-{
-       ShowDeprecationWarning("getLinearVelocity()", "the linearVelocity property");
-       PyObject *retVal = PyList_New(3);
-
-       PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_linear_velocity[0]));
-       PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_linear_velocity[1]));
-       PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_linear_velocity[2]));
-       
-       return retVal;
-}
-
-
-
-/* 6. setLinearVelocity                                                 */
-const char KX_SCA_AddObjectActuator::SetLinearVelocity_doc[] = 
-"setLinearVelocity(vx, vy, vz)\n"
-"\t- vx: float\n"
-"\t- vy: float\n"
-"\t- vz: float\n"
-"\t- local: bool\n"
-"\tAssign this velocity to the created object. \n";
-
-PyObject* KX_SCA_AddObjectActuator::PySetLinearVelocity(PyObject* args)
-{
-       ShowDeprecationWarning("setLinearVelocity()", "the linearVelocity property");
-       
-       float vecArg[3];
-       if (!PyArg_ParseTuple(args, "fff:setLinearVelocity", &vecArg[0], &vecArg[1], &vecArg[2]))
-               return NULL;
-
-       m_linear_velocity[0] = vecArg[0];
-       m_linear_velocity[1] = vecArg[1];
-       m_linear_velocity[2] = vecArg[2];
-       Py_RETURN_NONE;
-}
-
-/* 7. getAngularVelocity */
-const char KX_SCA_AddObjectActuator::GetAngularVelocity_doc[] = 
-"GetAngularVelocity()\n"
-"\tReturns the angular velocity that will be assigned to \n"
-"\tthe created object.\n";
-
-PyObject* KX_SCA_AddObjectActuator::PyGetAngularVelocity()
-{
-       ShowDeprecationWarning("getAngularVelocity()", "the angularVelocity property");
-       PyObject *retVal = PyList_New(3);
-
-       PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_angular_velocity[0]));
-       PyList_SET_ITEM(retVal, 1, PyFloat_FromDouble(m_angular_velocity[1]));
-       PyList_SET_ITEM(retVal, 2, PyFloat_FromDouble(m_angular_velocity[2]));
-       
-       return retVal;
-}
-
-
-
-/* 8. setAngularVelocity                                                 */
-const char KX_SCA_AddObjectActuator::SetAngularVelocity_doc[] = 
-"setAngularVelocity(vx, vy, vz)\n"
-"\t- vx: float\n"
-"\t- vy: float\n"
-"\t- vz: float\n"
-"\t- local: bool\n"
-"\tAssign this angular velocity to the created object. \n";
-
-PyObject* KX_SCA_AddObjectActuator::PySetAngularVelocity(PyObject* args)
-{
-       ShowDeprecationWarning("setAngularVelocity()", "the angularVelocity property");
-       
-       float vecArg[3];
-       if (!PyArg_ParseTuple(args, "fff:setAngularVelocity", &vecArg[0], &vecArg[1], &vecArg[2]))
-               return NULL;
-
-       m_angular_velocity[0] = vecArg[0];
-       m_angular_velocity[1] = vecArg[1];
-       m_angular_velocity[2] = vecArg[2];
-       Py_RETURN_NONE;
-}
-
 void   KX_SCA_AddObjectActuator::InstantAddObject()
 {
        if (m_OriginalObject)
@@ -495,26 +284,3 @@ PyObject* KX_SCA_AddObjectActuator::PyInstantAddObject()
 
        Py_RETURN_NONE;
 }
-
-
-
-/* 7. GetLastCreatedObject                                                */
-const char KX_SCA_AddObjectActuator::GetLastCreatedObject_doc[] = 
-"getLastCreatedObject()\n"
-"\tReturn the last created object. \n";
-
-
-PyObject* KX_SCA_AddObjectActuator::PyGetLastCreatedObject()
-{
-       ShowDeprecationWarning("getLastCreatedObject()", "the objectLastCreated property");
-       SCA_IObject* result = this->GetLastCreatedObject();
-       
-       // if result->GetSGNode() is NULL
-       // it means the object has ended, The BGE python api crashes in many places if the object is returned.
-       if (result && (static_cast<KX_GameObject *>(result))->GetSGNode()) 
-       {
-               return result->GetProxy();
-       }
-       // don't return NULL to python anymore, it gives trouble in the scripts
-       Py_RETURN_NONE;
-}