add missing files after merging
[blender.git] / source / gameengine / Ketsji / KX_SCA_AddObjectActuator.cpp
index 239c4a0be6772985fe2d7daa72987c3dc75e3ebd..62a51fb4efccdc116c1bf2c27f5baa3a39cfae32 100644 (file)
@@ -1,3 +1,6 @@
+/** \file gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
+ *  \ingroup ketsji
+ */
 //
 // Add an object when this actuator is triggered
 //
@@ -17,7 +20,7 @@
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software Foundation,
-// Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 //
 // The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
 // All rights reserved.
 #include "KX_IPhysicsController.h"
 #include "PyObjectPlus.h" 
 
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
 /* ------------------------------------------------------------------------- */
 /* Native functions                                                          */
 /* ------------------------------------------------------------------------- */
@@ -57,7 +56,7 @@ KX_SCA_AddObjectActuator::KX_SCA_AddObjectActuator(SCA_IObject *gameobj,
                                                                                                   const float *angvel,
                                                                                                   bool angv_local)
        : 
-       SCA_IActuator(gameobj),
+       SCA_IActuator(gameobj, KX_ACT_ADD_OBJECT),
        m_OriginalObject(original),
        m_scene(scene),
        
@@ -152,7 +151,7 @@ bool KX_SCA_AddObjectActuator::UnlinkObject(SCA_IObject* clientobj)
        return false;
 }
 
-void KX_SCA_AddObjectActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
+void KX_SCA_AddObjectActuator::Relink(CTR_Map<CTR_HashedPtr, void*> *obj_map)
 {
        void **h_obj = (*obj_map)[m_OriginalObject];
        if (h_obj) {
@@ -163,6 +162,7 @@ void KX_SCA_AddObjectActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
        }
 }
 
+#ifdef WITH_PYTHON
 
 /* ------------------------------------------------------------------------- */
 /* Python functions                                                          */
@@ -170,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,
@@ -198,18 +192,7 @@ PyTypeObject KX_SCA_AddObjectActuator::Type = {
 };
 
 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
 };
 
@@ -259,181 +242,14 @@ PyObject* KX_SCA_AddObjectActuator::pyattr_get_objectLastCreated(void *self, con
                return actuator->m_lastCreatedObject->GetProxy();
 }
 
-/* 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 = PyLong_AsSsize_t(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 PyLong_FromSsize_t(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 PyUnicode_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)
+PyObject* KX_SCA_AddObjectActuator::PyInstantAddObject()
 {
-       ShowDeprecationWarning("setLinearVelocity()", "the linearVelocity property");
-       
-       float vecArg[3];
-       if (!PyArg_ParseTuple(args, "fff:setLinearVelocity", &vecArg[0], &vecArg[1], &vecArg[2]))
-               return NULL;
+       InstantAddObject();
 
-       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;
-}
+#endif // WITH_PYTHON
 
 void   KX_SCA_AddObjectActuator::InstantAddObject()
 {
@@ -469,33 +285,3 @@ void       KX_SCA_AddObjectActuator::InstantAddObject()
                replica->Release();
        }
 }
-
-PyObject* KX_SCA_AddObjectActuator::PyInstantAddObject()
-{
-       InstantAddObject();
-
-       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;
-}